| Индекс материала |
|---|
| Разработка пользовательского интерфейса |
| Элементы-источники событий |
| Классы пакета AWT: Component, Window, Frame |
| Диалоговые окна |
| Все страницы |
В основу Java-программирования наряду с другими положен механизм обработки событий.
Событие – объект, который описывает изменение состояния источника (нажатие кнопки, выбор пункта меню, разворачивание, сворачивание окошка, нажатие клавиши и т.д.). Источник – это объект, генерирующий события. Одно и то же событие может быть значимым для одних объектов и не существенным для других.
В Java различают два механизма обработки событий:
1) с помощью метода handleEvent() (применялся до версии jdk 1.1 (Java 1.0));
2) с помощью модели делегирования событий.
Далее будем рассматривать особенности обработки событий с применением второго механизма. В соответствии с моделью делегирования событий в обработке событий участвуют 2 объекта: источник (source) и блок прослушивания (listener − интерфейс для перехода конкретного вида события от конкретного компонента). Источник − объект, генерирующий событие. Блок прослушивания – объект, получающий уведомление о возникновении события, зарегистрированного одним или несколькими источниками, путем вызова одного из его методов (методов блока прослушивания) для приема и обработки этих уведомлений.
Методы обработки событий находятся в пакете java.awt.event.
Классы событий
В корне иерархии классов событий Java находится класс EventObject, находящийся в пакете java.util. Класс EventObject содержит 2 метода:
- Object getSource( ) – возвращает источник события;
- toString( ) – возвращает название этого события в виде строки.
| Класс событий | Описание |
| ActionEvent | Генерируется, когда нажата кнопка, дважды щелкнут элемент списка или выбран пункт меню |
| AdjustmentEvent | Генерируется при манипуляциях с полосой прокрутки |
| ComponentEvent | Генерируется, когда компонент скрыт, перемещен, изменен в размере или становится видимым |
| ContainerEvent | Генерируется, когда компонент добавлен или удален из контейнера |
| FocusEvent | Генерируется, когда компонент получает или теряет фокус |
| ItemEvent | Генерируется, когда помечен флажок или элемент списка, сделан выбор элемента в списке, выбран или отменен элемент меню с меткой |
| KeyEvent | Генерируется, когда получен ввод с клавиатуры |
| MouseEvent | Генерируется, когда объект перетащен мышью (dragged), перемещен (moved), произошел щелчок (clicked), нажата (pressed) или отпущена (released) кнопка мыши, указатель мыши входит или выходит в/за границы компонента |
| TextEvent | Генерируется, когда изменено значение текстового поля |
| WindowEvent | Генерируется, когда окно активизировано, закрыто, развернуто, организован выход из него |
Класс ActionEvent
Определяет четыре целочисленные константы, которые можно использовать для идентификации любых модификаторов, связанных с событием действия: ALT_MASK, CTRL_MASK, META_MASK и SHIFT_MASK. Кроме того, существует целочисленная константа ACTION_PERFORMED, которую можно применять для идентификации action-события.
Имеет два конструктора:
ActionEvent ( Object src, int type, String cmd );
ActionEvent ( Object src, int type, String cmd, int modifiers );
src – ссылка на объект, который генерирует события (для следующих описываемых классов значение аналогичное);
type – тип события (для следующих описываемых классов значение аналогичное);
cmd – командная строка события;
modifiers – указывает, какие клавиши-модификаторы были нажаты при генерации события (Alt, Ctrl, Shift ).
Например, когда кнопка нажата, генерируется action-событие, которое имеет имя команды, равное метке или надписи на этой кнопке.
FocusEvent
Событие этого класса идентифицируется константой FOCUS_GAINED и FOCUS_LOST. Конструкторы класса:
FocusEvent ( Component src, int type );
FocusEvent ( Component src, int type, boolean temporaryFlag );
temporaryFlag – устанавливается как true, если cобытие фокуса временное, иначе – false.
ItemEvent
Существует два типа Item-событий, которые определяются константами:
DESELECTED – пользователь отменил выбор элемента;
SELECTED – выбрал элемент списка.
Конструктор класса:
ItemEvent ( ItemSelectable src, int type, Object entry, int state );
state – состояние этого элемента.
Для того чтобы получить ссылку на объект ItemSelectable, используется метод getItemSelectable( ).
KeyEvent
Имеется три типа Key-событий, которые идентифицируются тремя
константами:
KEY_PRESSED – клавиша нажата;
KEY_RELEASED – клавиша отпущена;
KEY_TYPED – генерируется только при нажатии символьной клавиши.
Конструктор класса:
when – параметр, передающий конструктору системное время, когда была нажата клавиша;
modifiers – параметр, указывающий, какие модификаторы были нажаты вместе с клавишей;
code – параметр, передающий конструктору код клавиши.
MouseEvent
Существует семь типов Mouse-событий, которые идентифицируются семью константами:
MOUSE_CLICKED – пользователь щелкнул кнопкой мыши;
MOUSE_DRAGGED – пользователь перетащил мышь;
MOUSE_ENTERED – указатель мыши введен в компонент;
MOUSE_EXITED – указатель мыши выведен из компонента;
MOUSE_MOVED – мышь передвинута;
MOUSE_PRESSED – кнопка мыши нажата;
MOUSE_RELEASED – кнопка мыши освобождена.
Конструктор класса:
MouseEvent (Component src, int type, long when, int modifiers, int x, int y, int clicks, boolean triggersPopup );
clicks – подсчитывается количество щелчков;
triggersPopup – показывает, приводит ли это событие к появлению раскрывающегося меню; если да, то значение параметра соответствует true.
int getX( ); int getY( ); − методы для получения координат мышки.
TextEvent
TEXT_VALUE_CHANGED – событие, определяющее ввод текста пользователем в текстовое поле.
Конструктор класса:
WindowEvent
Существует семь типов событий WindowEvent:
WINDOW_ACTIVATED – окно активизировано;
WINDOW_CLOSED – окно закрыто;
WINDOW_DEACTIVATED – окно деактивизировано;
WINDOW_DEICONIFIED – окно развернуто из пиктограммы;
WINDOW_ICONIFIED – окно свернуто в пиктограмму;
WINDOW_OPENED – окно открыто;
WINDOW_CLOSING – пользователь потребовал закрытия окна.
Конструктор класса:
WindowEvent (Window src, int type);
Метод Window getWindow(); − возвращает Window-объект, который сгенерировал это событие.





