Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2й курс - задание на все лабораторные.doc
Скачиваний:
7
Добавлен:
20.04.2015
Размер:
249.34 Кб
Скачать

4Я. Первое знакомство с gui Swing.

Использовать редактор форм Jigloo. Для начала работы создается new->other->GUI Forms->Swing->main swing application

Задание для группы 21:

На форме 2 поля ввода, в которые вводятся числа, кнопка + и поле для результата. Сложить значения и поместить результат в поле результата по нажатию кнопки.

Задание для группы 22:

На форме поле ввода, кнопка и метка. В поле вводится значение в следующем формате:

$3123.12

Обязательно присутствует знак $, целая часть, точка и дробная часть. Примеры неправильного ввода:

123.3 $.123 $$123.123 $123 .$123.123 Adfasdfsd

Если ввод правильный – вывести в метку “CORRECT”, иначе “NOTCORRECT”. Для проверки проще всего использовать регулярные выраженияregex.

Задание для всех, кто не успел сдать лабораторную на занятии:

В полосе меню вверху формы должны работать следующие кнопки:

New(очистить все поля)

Save(сохранить все поля в файл)

Open(загрузить все поля из файла)

Help(показать другую форму, на которой будет текст с информацией о работе и авторе).

Close(завершить выполнение программы:System.exit(0); )

Собрать исполняемый JAR-файл (который можно запустить как экзешник, двойным кликом): правой кнопкой на проекте вpackageexplorer->export->java->executableJAR

Цель работы: научиться использовать обработчики событий ActionListener.

Быстрое добавление обработчика событий в jigloo: установить типActionListenerвanonymous(чтобы рассмотреть картинку документ можно увеличить).

При этом будет сгенерирован такой код:

helpMenuItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

//здесь можно обращаться сразу к компонентам формы, например так:

//this.NewSwingApp.jTextField1.getText() – такая конструкция используется для вложенных классов

}

});

В качестве параметра в метод addActionListenerпередается класс, реализующий интерфейсActionListener(анонимный класс – у него нет названия).Подчеркнутыйкод в примере выше и следующий равносильны:

public class myActionListener implements ActionLsitener {

public void actionPerformed(ActionEvent evt) {

//здесь обращаться к компонентам формы нельзя, так как они находятся в другом классе. Нужно передать ссылки на компоненты в экземпляр этого класса.

}

}

Добавление окна для пункта меню help: 1) создать новую форму с именем NewJFrame

При этом packageу всех классов должен быть одинаковый, например

package lab.ulstu;

Обработчик события для показа новой формы будет выглядеть так:

helpMenuItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

NewJFrame frame = new NewJFrame();

frame.setVisible(true);

}

});

5Я. Обработка событий от мыши.

Разработать игру лабиринт.

На форму помещается панель JPanelсlayout=absolute. Поверх нее помещаются другие панели, символизирующие стены в лабиринте. Одна из панелей является начальной областью: нужно навести на нее курсор, чтобы игра началась. Одна из панелей является конечной областью: если навести на нее курсор – выводится сообщение (на форму или в отдельном окне) о победе.

Дополнительное задание для тех кто не успел на паре:

21я группа: добавить область-ключ и область-дверь. При наведении курсора на ключ исчезает дверь, блокирующая доступ к финишу. На панели ключа должна рисоваться картинка (программно или загружаться из pngфайла).

22я группа: добавить несколько областей, через которые обязательно нужно пройти, чтобы засчитывалась победа при наведении на финиш. Добавить в игру дополнительную попытку: после первого касания «стены» выводится сообщение, но игра еще не окончена.

Пример кода, перегружающего метод рисования панели и рисующего картинку из файла:

final BufferedImage img = ImageIO.read(new File("C:\\files\\key.jpg"));

jPanelKey = new JPanel() {

public void paint(Graphics g) {

g.fillRect(0, 0, this.getWidth(), this.getHeight());

g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), null );

}

};