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 );
}
};