- •Введение в Java-технологии
- •If (условие) {
- •Массивы и строки
- •Import имя.Пакета1.ИмяКласса1;
- •Import имя.Пакета2.ИмяКласса2;
- •Import имя.Пакета.*;
- •If ("женат".EqualsIgnoreCase(state) ||
- •If ("неженат".EqualsIgnoreCase(state) ||
- •Потоковый ввод-вывод
- •Коллекции
- •Графический пользовательский интерфейс
- •События
- •JavaСтандартная библиотека Java включает в себя набор классов, реализующих богатый набор средств для разработки графических приложений, включая
- •Совокупность данных средств принято называть Java2d.
- •Потоки исполнения
События
Графический пользовательский интерфейс приложения относится к системам, управляемым по событиям:
– при запуске программы создается пользовательский интерфейс;
– далее приложение ожидает наступления некоторого события, связанного с пользовательским интерфейсом;
– при наступлении события программа выполняет необходимые действия, а затем снова переходит в режим ожидания.
Событием в пользовательском интерфейсе считается
– непосредственное действие пользователя (щелчок или движение мыши, нажатие клавиши),
– изменение состояния какого-либо компонента интерфейса (например, изменение состояния кнопки-переключателя).
При обработке событий в библиотеке Java взаимодействуют три вида объектов:
источник события обычно компонент пользовательского интерфейса
слушатель события объект, которые получает информацию о произошедшем событии
объект-событие содержат в себе информацию о произошедшем событии и источнике этого события
Для обработки событий используется шаблон проектирования "Слушатель" (Observer).
В соответствии с этим шаблоном объект-источник события регистрирует всех объектов-слушателей, желающих получать информацию о событиях, и отправляет слушателям сообщения о произошедшем событии.
Подобный подход позволяет сделать используемые объекты максимально независимыми друг от друга.
У одного и того же источника событий может быть несколько слушателей:
Один и тот же объект может являться слушателем у нескольких источников событий:
Для описания объектов-событий используются классы, являющиеся потомками java.awt.AWTEvent.
Каждый класс, описывающий событие, содержит свои специфические методы, позволяющие получить информацию о произошедшем событии.
Некоторые методы класса MouseEvent
int getButton() возвращает номер нажатой кнопки (0, 1, 2, 3)
int getClickCount() возвращает количество нажатий кнопки мыши
Point getPoint() возвращает позицию указателя мыши
Некоторые методы класса KeyEvent
char getKeyChar() возвращает символ, соответствующий нажатой клавише
int getKeyCode() возвращает код нажатой клавиши
boolean isShiftDown()
boolean isControlDown()
boolean isAltDown() возвращают состояние клавиш регистра
Для обработки любого события необходимо:
1. Создать объект-слушатель событий. Объект-слушатель событий должен иметь метод(ы) для обработки требуемого типа событий.
2. Зарегистрировать слушатель событий у предполагаемого источника событий. Каждый источник событий хранит список своих слушателей.
Объекты-слушатели событий должны реализовывать интерфейсы вида ***Listener, соответствующие событиям, например:
ActionListener интерфейс слушателя события-действия
KeyListener интерфейс слушателя события клавиатуры
MouseListener
MouseMotionListener
MouseWheelListener интерфейсы слушателей событий мыши
Все интерфейсы объявлены в пакете java.awt.event
Интерфейсы слушателей событий содержат один или несколько методов, предназначенных для обработки каждого типа событий, например:
void actionPerformed(ActionEvent e) метод для обработки события-действия
void keyPressed(KeyEvent e)
void keyReleased(KeyEvent e)
void keyTyped(KeyEvent e) методы для обработки событий клавиатуры
Пример. Описание обработчика события нажатия на кнопку
class MyButtonClick implements ActionListener {
public void actionPerformed(ActionEvent e) {
// ... обработка нажатия на кнопку ...
}
}
В том случае, когда нет необходимости обрабатывать все типы событий, за основу можно взять классы ***Adapter, содержащие пустые обработчики событий, например:
KeyAdapter класс-обработчик событий клавиатуры
MouseAdapter
MouseMotionAdapter классы-обработчики событий мыши
Все классы-адаптеры объявлены в пакете java.awt.event
Пример. Описание обработчика события мыши
class MyMouseClick extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
// ... обработка клика ...
}
}
Для регистрации слушателей событий у объектов, которые могут быть источниками событий, имеются методы вида add***Listener(), например:
void addActionListener(ActionListener l) добавить слушателя события-действия
void addKeyListener(KeyListener l) добавить слушателя события клавиатуры
void addMouseListener(MouseListener l)
void addMouseMotionListener(MouseMotionListener l)
void addMouseWheelListener(MouseWheelListener l) добавить слушателя событий мыши
и др.
Пример. Регистрация обработчика нажатия на кнопку
MyButtonClick myButtonClick=new MyButtonClick();
Button.addActionListener(myButtonClick);
Если объект-обработчик событий должен иметь возможность обратиться к полям другого объекта (окна), то можно
1. Использовать параметризованный конструктор, параметром которого будет требуемый объект-окно
2. Использовать встроенный класс-обработчик (т.е. класс, объявленный внутри другого класса)
Для удаления слушателя событий используются методы вида remove***Listener(), например:
void removeActionListener(ActionListener l) удалить слушателя события-действия