рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Вызов конструктора из другого конструктора.

Вызов конструктора из другого конструктора. - раздел Программирование, Введение в Java   Часто Для Того, Чтобы Избежать Написание Повторяющегося Кода ...

 

Часто для того, чтобы избежать написание повторяющегося кода инициализации, необходимо вызвать код одного конструктора из другого.

 

Вот пример, как это можно делать:

public class SomeClass {

int a;

int b;

int c;

public SomeClass(int a, int b){

this.a = a;

this.b = b;

}

public SomeClass(int a, int b, int c){

// Вызов конструктора с двумя параметрами.

this(a, b);

this.c = c;

}

public void Show(){

System.out.println("a = " + a);

System.out.println("b = " + b);

System.out.println("c = " + c);

}

}

 

Как вы видите, для этого используется ключевое слово this, после которого в круглых скобках указываем параметры для соответствующего конструктора (с двумы параметрами в данном случае).

 

Игра «Пятнашки»

 

 

package prjavapytna;

 

import javax.swing.UIManager;

import java.awt.*;

 

public class ApplicationPytna

{

boolean packFrame = false;

/**Construct the application*/

public ApplicationPytna()

{

FramePytna frame = new FramePytna();

//Validate frames that have preset sizes

//Pack frames that have useful preferred

//size info, e.g. from their layout

if (packFrame)

{

frame.pack();

}

else

{

frame.validate();

}

//Center the window

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

Dimension frameSize = frame.getSize();

if (frameSize.height > screenSize.height)

{

frameSize.height = screenSize.height;

}

if (frameSize.width > screenSize.width)

{

frameSize.width = screenSize.width;

}

frame.setLocation((screenSize.width - frameSize.width) / 2,

(screenSize.height - frameSize.height) / 2);

frame.setVisible(true);

}

/**Main method*/

public static void main(String[] args)

{

try

{

UIManager.setLookAndFeel(

UIManager.getCrossPlatformLookAndFeelClassName());

}

catch(Exception e)

{

e.printStackTrace();

}

new ApplicationPytna();

}

}

 

package prjavapytna;

 

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

 

public class FramePytna extends JFrame

{

JPanel contentPane;

JPanel gamePane = new JPanel();

BorderLayout borderLayout1 = new BorderLayout();

//линия статус бара

JLabel status= new JLabel();

//массив кнопочек

JButton[][] buttons = new JButton[4][4];

//матрица для хранения чисел

int[][] matrix = new int[4][4];

 

/**Construct the frame*/

public FramePytna()

{

enableEvents(AWTEvent.WINDOW_EVENT_MASK);

try

{

jbInit();

}

catch(Exception e)

{

e.printStackTrace();

}

}

/**Component initialization*/

private void jbInit() throws Exception

{

contentPane = (JPanel) this.getContentPane();

contentPane.setLayout(borderLayout1);

this.setSize(new Dimension(206,275));

this.setTitle("Пятнашки");

//запрещаем изменение размера окна

this.setResizable(false);

//Создаем основное меню

JMenuBar menuBar = new JMenuBar();

//Создаем подменю

JMenu menuGame = new JMenu("Игра");

JMenu menuHelp = new JMenu("Помощь");

//Добавляем подменю в основное меню

menuBar.add(menuGame);

menuBar.add(menuHelp);

//Устанавливаем полученное меню на окно

this.setJMenuBar(menuBar);

//Создаем элементы подменю Game с обработчиками событий

JMenuItem item1 = new JMenuItem("Новая игра");

JMenuItem item2 = new JMenuItem("Выход");

//Создаем элемент подменю Help с обработчиками событий

JMenuItem item3 = new JMenuItem("О игре...");

//Добавляем обработчики событий по нажатию

item1.addActionListener(new java.awt.event.ActionListener()

{

public void actionPerformed(ActionEvent e)

{

newGame();

}

});

item2.addActionListener(new java.awt.event.ActionListener()

{

public void actionPerformed(ActionEvent e)

{

System.exit(0);//Выход из системы

}

});

item3.addActionListener(new java.awt.event.ActionListener()

{

public void actionPerformed(ActionEvent e)

{

JOptionPane.showMessageDialog(null,

"Игра Пятнашки","Об игре",

JOptionPane.QUESTION_MESSAGE);

}

});

 

//Добавляем созданные элементы к подменю

menuGame.add(item1);

menuGame.add(item2);

menuHelp.add(item3);

gamePane.setLayout(null);

// добавляем кнопочки

int count=0;

for(int i = 0;i<4;i++)

for(int j = 0;j<4;j++)

{

buttons[i][j] = new JButton(""+count);

//устанавливаем обработчик событий

buttons[i][j].addMouseListener(new mAdapter(i,j));

buttons[i][j].setSize(50,50);

buttons[i][j].setLocation(50*j,50*i);

buttons[i][j].setCursor(new Cursor(Cursor.HAND_CURSOR));

gamePane.add(buttons[i][j]);

matrix[i][j]=count;//задаем матрицу

count++;

}

buttons[0][0].setText(" ");

//Добавляем игровую панель с кнопками

contentPane.add(gamePane,BorderLayout.CENTER);

//обрамляем строку статуса

status.setBorder(BorderFactory.createEtchedBorder());

//Добавляем строку статуса

contentPane.add(status,BorderLayout.SOUTH);

//новая игра

newGame();

}

/**Overridden so we can exit when window is closed*/

protected void processWindowEvent(WindowEvent e)

{

super.processWindowEvent(e);

if (e.getID() == WindowEvent.WINDOW_CLOSING)

{

System.exit(0);

}

}

/**Случайным образом переставляем элементы матрицы*/

public void randomizeMatrix()

{

for(int i = 0;i<100;i++)

{

int a = (int)(Math.random()*4);

int b = (int)(Math.random()*4);

int a2 = (int)(Math.random()*4);

int b2 = (int)(Math.random()*4);

 

int c = matrix[a][b];

matrix[a][b] = matrix[a2][b2];

matrix[a2][b2] = c;

}

}

/**Начинаем новую игру*/

public void newGame()

{

randomizeMatrix();

for(int i = 0;i<4;i++)

for(int j = 0;j<4;j++)

{

//пишем на кнопочках числа из матрицы

if(matrix[i][j]!=0)buttons[i][j].setText(""+matrix[i][j]);

else buttons[i][j].setText("");

}

status.setText("Старт новой игры");

gamePane.setVisible(true);

}

/**Класс адаптера прослушивающий события над кнопкой*/

class mAdapter extends java.awt.event.MouseAdapter

{

int posi,posj;

int startx=0;

int starty=0;

/**Конструктор адаптера в зависимости от позиции кнопочки*/

mAdapter(int posI,int posJ)

{

this.posi=posI;

this.posj=posJ;

}

/**При нажатой кнопке мыши*/

public void mousePressed(MouseEvent e)

{

//меняем курсор

buttons[posi][posj].setCursor(new Cursor(Cursor.MOVE_CURSOR));

//запоминаем точку начала переноса кнопки

startx=e.getX();

starty=e.getY();

}

/**При отпускании кнопки мыши*/

public void mouseReleased(MouseEvent e)

{

//меняем курсор

buttons[posi][posj].setCursor(new Cursor(Cursor.HAND_CURSOR));

//запоминаем точку окончания переноса кнопки

int endx=e.getX();

int endy=e.getY();

//определяем направление переноса

//если абсолютная величина (shiftx) больше

//абсолютной величины (shifty)

//значит передвигаемся по оси х

int shiftx=endx-startx;

int shifty=endy-starty;

if(Math.abs(shiftx)>Math.abs(shifty))

{

//определяем направление движения по оси х

if(shiftx>0)

{//вправо

 

//если это не крайние правые кнопки

//и правая кнопка пустая

//меняем местами кнопку с пустой кнопкой

if((posj != 3) && (matrix[posi][posj+1] == 0))

{

matrix[posi][posj+1] = matrix[posi][posj];

matrix[posi][posj]=0;

buttons[posi][posj].setText("");

buttons[posi][posj+1].setText(""+matrix[posi][posj+1]);

status.setText("good turn");

}else status.setText("it is impossible");

}

else

{//влево

 

//если это не крайние левые кнопки

//и левая кнопка пустая

//меняем местами кнопку с пустой кнопкой

if((posj != 0) && (matrix[posi][posj-1] == 0))

{

matrix[posi][posj-1] = matrix[posi][posj];

matrix[posi][posj]=0;

buttons[posi][posj].setText("");

buttons[posi][posj-1].setText(""+matrix[posi][posj-1]);

status.setText("good turn");

}else status.setText("it is impossible");

}

}

else

{

//определяем направление движения по оси y

if(shifty>0)

{//вниз

 

//если это не крайние нижние кнопки

//и нижняя кнопка пустая

//меняем местами кнопку с пустой кнопкой

if((posi != 3) && (matrix[posi+1][posj] == 0))

{

matrix[posi+1][posj] = matrix[posi][posj];

matrix[posi][posj]=0;

buttons[posi][posj].setText("");

buttons[posi+1][posj].setText(""+matrix[posi+1][posj]);

status.setText("Хороший ход");

}else status.setText("Проигрыш");

}

else

{//вверх

 

//если это не крайние верхние кнопки

//и верхняя кнопка пустая

//меняем местами кнопку с пустой кнопкой

if((posi != 0) && (matrix[posi-1][posj] == 0))

{

matrix[posi-1][posj] = matrix[posi][posj];

matrix[posi][posj]=0;

buttons[posi][posj].setText("");

buttons[posi-1][posj].setText(""+matrix[posi-1][posj]);

status.setText("good turn");

}else status.setText("it is impossible");

}

}

//проверяем все ли числа стоят на своих местах

//если да то победа!!!

int count=1;

int error=0;

for(int i = 0;i<4;i++)

for(int j = 0;j<4;j++)

{

if(matrix[i][j]!=count)error++;

count++;

}

if(error==1)

{

status.setText("Вы выиграли!!!");

int result = JOptionPane.showConfirmDialog(null,

"Вы выиграли!!!","Вы выиграли!!! Новая игра?",JOptionPane.YES_NO_OPTION);

if (result == JOptionPane.YES_OPTION)newGame();

else gamePane.setVisible(false);

}

}

}

}

 

– Конец работы –

Эта тема принадлежит разделу:

Введение в Java

Операторы ветвления... Операторов ветвления в Java два if и switch Первый позволяет пойти программе по одному из двух направлений второй...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Вызов конструктора из другого конструктора.

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Что такое Java и как она работает?
  Если кратко, то Java - это один из языков программирования. Он разработан компанией Sun, и является платформо-независимым. Это означает, что программа, написанная на Java, будет оди

Что такое JDK и как его установить?
  JDK расшифровывается как Java Developer Kit. Это набор программ и утилит, предназначенный для программирования на Java. В него ряд утилит. Вот некоторые из них: Компилятор

Категории программ Java
● Приложение (application) – аналог “обычной” прикладной программы. ● Апплет (applet) – специализированная программа, работающая в окне WWW-документа под управлением браузера.

SDK - Software Development Kit
Поставить на компьютер исполняющую среду Java (JVM) можно путём установки SDK – Комплекта разработки программного обеспечения. Имеется три типа SDK: ● Java ME– компл

Первая программа на Java
  Первая программа, по давно укоренившейся традиции, будет HelloWorld. Ниже приводится ее текст, который надо набрать в любом текстовом редакторе, позволяющем сохранять документ в ASC

Числовые типы данных
  Числовые типы данных Java перечислены в следующей таблице: Тип Описание Количество байтов int

Логический тип
  Переменные логического типа могут принимать значение или true (истина), или false (ложь). Сразу обратите внимание, что нельзя вместо true и false писать нулевое и ненулевое значения

Массивы
  Начнем сразу с примеров. Вот пример, в котором мы заводим массив из 3-х целых чисел, в каждое из которых мы записываем случайное целое число от 0 до 9 и затем выводим все числа на э

Абстрактные методы
  Когда мы строим иерархию классов, то может оказаться, что некоторый метод должен присутствовать во всех классах, но во всех классах он имеет разную реализацию. Например, у нас может

Модификатор final
  Иногда мы не хотим, чтобы от некоторого созданного нами класса можно было производить классы-потомки. Например, это может понадобиться в целях безопасности.  

Первая оконная программа
  Все программы, которые мы создавали до сих пор, были консольными. На этом занятии мы с вами создадим первую программу, которая будет будет иметь оконный вид. Ее можно будет запустит

Читаем строку с клавиатуры
  Вы, наверное, обратили внимание, что раньше мы старательно избегали получать данные от пользователя. Значения всем переменным мы задавали непосредственно в программе. Сейчас мы и уз

Читаем числа с клавиатуры
  Вот пример класса, который может читать числа с клавиатуры: import java.io.*; class NumReader{ public static void main(String [] args) throws IOException{

Закрытие оконной программы
  Давайте дополним код нашей первой оконной программы по крайней мере таким образом, чтобы она закрывалась: import java.awt.*; import java.awt.event.*; clas

Пакет java.awt - обзор
  Пакет java.awt предназначен для создания пользовательского интерфейса. Он, в частности, содержит классы для различных компонентов - кнопок, текстовых полей, классы для меню, классы

Библиотека Swing - делаем окно
  В Java существует две библиотеки для создания пользовательского интерфейса - Awt и Swing. Swing считается более продвинутой и современной. Сегодня мы создадим окно с использованием

Swing: добавляем кнопку с обработчиком
  Посмотрим, как можно добавить к созданному ранее окну кнопку с обработчиком.   Наша кнопка будет экземпляром класса JButton. Вообще схема работы с элементами

Swing: кнопка с двумя состояниями
  В библиотеке swing наряду с обычной кнопкой есть кнопка с двумя состояниями - нажатом и отжатом. Она работает приблизительно как checkbox, только выглядеть по-другому. Для создания

Правильное закрытие программы
  Созданные нами ранее программы работали не вполне корректно - а именно после своего закрытия они оставались в памяти. Убедится в этом было достаточно просто - запустив и закрыв прог

Swing: элемент JCheckBox
  Элемент JCheckBox - это обычный checkbox (флажок). Он имеет вид квадратика, в котором может стоять (или не стоять) галочка. Этот элемент может иметь 22 состояния - либо включенное,

Swing: JRadioButton
  Элемент управления JRadioButton предназначен для организации выбора только одного значения из нескольких возможных. Для этого несколько элементов JRadioButton объединяются в одну гр

Swing: Несколько групп радиокнопок
  Ранее мы рассмотрели работу с одной группой радиокнопок. Сейчас же мы с вами посмотрим, как работать с несколькими группами радиокнопок.   Приведем сразу лист

Swing: Список JList
  Класс JList предназначен для выбора пользователем одного или нескольких значений из списка. В этом элементе пользовательского интерфейса можно выбирать как один элемент, так и неско

Простой графический редактор
  import java.awt.*; import java.awt.event.*; public class DrawCanvas extends Canvas { private int lastX, lastY; private int ex, ey; priva

Интерфейсы
  Интерфейсы в Java предназначены только для объявления некоторых методов и констант. Никакие реализации методов в интерфейсах не предусматриваются. Т. е. интерфейс только содержит ин

Менеджеры компоновок
Применение компоновок   При проектировании интерфейса пользователя с использованием языка Java компоненты размещаются в контейнерах. Самым простым примером контейнера может с

Интерфейс в качестве типа
  Мы не можем создать экземпляр интерфейса. Именно потому, что у него не существует реализации методов. Т. е. мы не можем написать, например, так: IFigure f = new IFigure();

Множественное наследование
  В Java, как и во многих других языках программирования, не допускается множественное наследование для классов. У класса может быть только один непосредственный предок (у которого, в

Инверсия списка
  Рассмотрим с вами решение классической задачи - инверсии (т. е. размещению элементов в обратном порядке) списка. Список устроен следующим образом: каждый элемент списка содержит, во

Работа с файлами и дисками
  Для работы с файлами и дисками служит все тот же рассмотренный нами ранее класс File. Вот несколько примеров его использования для работы с папками и дисками: import java.i

Получение системных свойств
  Для получения системных свойств (таких, например, как имя пользователя, версия виртуальной java-машины или разделителя между папками для конкретной операционной системы) используетс

Перечисления (enum) 2
  В Java, в отличие от многих других языков программирования, в перечисления можно добавлять методы, переменные и другие члены. Этим перечисления очень напоминают на классы.

Что такое апплет?
Апплет - это небольшая программа на языке Java, которая может выполнятся в окне браузера. Сам по себе апплет, в отличие от других java-программ, выполнятся не может - присутствие браузера тут обяза

Пишем первый апплет
Первый апплет, по давно укоренившейся традиции, покажет нам некоторую надпись. В нашем примере это будет "FirstApplet". Итак, создайте файл FirstApplet.java и внесите в него следующий тек

Рисуем прямоугольники и эллипсы
Для рисования прямоульников и эллипсов служат методы drawOval, drawRect, fillOval и fillRect класса Graphics. Первые два из них рисуют прямоугольник и эллипс соответственно, последние два служат дл

Закрашиваем фон
По умолчанию апплет имеет серый фон. Для изменения фона служит метод setBackground. Этот метод принимает в качестве параметра переменную типа Color. Вот пример апплета с синим цветом фона:

Изменяем шрифт
Для вывода некоторой надписи в апплет мы используем метод drawString объекта Graphics. Этот метод имеет три параметра (что на надпись и расположение на апплете). По умолчанию используется стандартн

Мигающая надпись
Давайте посмотрим, как мы может достичь в апплете эффекта мигающей надписи (это как мигающие банеры, только не так надоедает ;)). Вот пример: import java.awt.*;import

Бегущая строка
Бегущую строку в апплете можно реализовать аналогично мигающей строке, рассмотренной на прошлом уроке. Отличие только в том, что в методе paint мы вместо изменения цвета изменяем координату x нашей

Работаем с мышью
Работа с мышкой происходит на основе модели делегирования событий. Дело тут происходит приблизительно так: есть некоторый источник событий - например, мышка. Этот источник генерирует определенные с

Интерфейс MouseListener
Для работы с мышью сушествуют два интерфейса. На этом уроке мы рассмотрим один из них - а именно MouseListener. В этом интерфейсе существует следующие пять методов: mouseCli

Интерфейс MouseMotionListener
Второй интерфейс, который позволяет реализовать работу с мышью - это MouseMotionListener. В этом интерфейсе только два метода: mouseMoved (перемещение мыши) mouseD

Работаем с клавиатурой
Для работы с клавиатурой используется интерфейс KeyListener. Т. е. класс нашего апплета должен реализовывать этот интерфейс для работы с клавиатурой. В этом интерфейсе имеется три метода: keyPresse

Вставляем изображение в апплет
Разумеется, рисовать в апплете с использованием примитивов - задача не из легких. Поэтому части поступают так - рисуют качественные изображения в каком-нибудь графическом редакторе, сохраняют их в

Заполение фона градиентом
Для заполнения фона апплета градиентом мы просто будем рисовать вертикальные линии. Каждая такая линия будет иметь цвет, незначительно отличющийся от цвета соседей. Разумеется, что все линии будут

Передача данных в апплет
Часто нам надо настроить апплет в соответствии с некоми параметрами. Параметры могут браться из различных источников - например из внешнего файла или из базы данных. На этом уроке мы рассмотрим, ка

Продолжение игры
На этом уроке мы закончим наш апплет с игрой "Убей муху". Нам осталось только добавить обработчики для щелчка мыши. При нажатии на кнопку мыши мы будет проверять, не попали ли мы

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги