В основе механизма обработки событий находятся классы, которые представляют события. Начнем наше изучение обработки событий с обзора классов событий. Они обеспечивают непротиворечивые и удобные в использовании средства инкапсуляции событий.
В корне иерархии классов событий Java находится класс EventObject, который размещен в пакете java.util. Это — суперкласс для всех событий. Один из его конструкторов:
EventObject(Object src)
где src — объект, который генерирует это событие.
EventObject содержит два метода:getSource() и toString(). Метод getSource() возвращает источник события. Его общая форма:
Object getSource()
Метод toString() возвращает строчный эквивалент события.
Класс AWTEvent, определенный в пакете java.awt, является подклассом класса EventObject. Это суперкласс (прямо или косвенно) всех AWT-событий, используемых моделью делегирования событий. Для определения типа события можно использовать его метод getID(). Сигнатура этого метода:
int getID()
Итак:
EventObject — суперкласс всех событий.
AWTEvent — суперкласс всех AWT-событий, которые обрабатываются моделью делегирования событий.
|
|
Пакет java.awt.event определяет несколько типов событий, которые генерируются различными элементами интерфейса пользователя. Табл. см. ниже перечисляет наиболее важные из этих классов событий и кратко описывает, когда они генерируются.
Класс событий | Описание |
ActionEvent | Генерируется, когда нажата кнопка, дважды щелкнут элемент списка или выбран пункт меню |
AdjustmentEvent | Генерируется при манипуляциях с полосой прокрутки |
ComponentEvent | Генерируется, когда компонент скрыт, перемещен, изменен в размере или становится видимым |
ContainerEvent | Генерируется, когда компонент добавляется или удаляется из контейнера |
FocusEvent | Генерируется, когда компонент получает или теряет фокус |
InputEvent | Абстрактный суперкласс для всех классов событий ввода компонентов |
ItemEvent | Генерируется, когда: • помечен флажок или элемент списка • сделан выбор элемента в списке выбора • выбран/отменен элемент меню с меткой |
KeyEvent | Генерируется, когда получен ввод от клавиатуры |
MouseEvent | Генерируется, когда объект перетащен мышью (dragged) или перемещен (moved), произошел щелчок (clicked), нажата (pressed) или отпущена (released) кнопка мыши; также генерируется, когда указатель мыши входит или выходит в/за границы компонента |
TextEvent | Генерируется, когда изменено значение текстовой области или текстового поля |
WindowEvent | Генерируется, когда окно активизировано, закрыто, дезактивировано, развернуто или свернуто в значок, открыто или организован выход (exit) из него |
Класс MouseEvent
Существует семь типов mouse-событий. Класс MouseEvent определяет целочисленные константы, которые могут использоваться для их идентификации:
|
|
mouse_clicked. Пользователь щелкнул кнопкой мыши.
mouse_dragged. Пользователь перетащил мышь.
mouse_entered. Указатель мыши веден в компонент.
mouse_exited. Указатель мыши выведен из компонента.
mouse_moved. Мышь передвинута.
mouse_pressed. Кнопка мыши нажата.
mouse_released. Кнопка мыши освобождена.
MouseEvent — это подкласс InputEvent. Он имеет конструктор:
MouseEvent(Component src, int type, long when, int modifiers, int x, int y, int clicks, boolean triggersPopup)
где src— ссылка на компонент, который генерировал это событие; type — тип события; when — параметр, передающий конструктору системное время, когда клавиша была нажата; modifiers — параметр, указывающий, какие модификаторы были нажаты, когда произошло mouse-событие. Координаты мыши передаются параметрами х и у Счет щелчков передается в clicks. Флажок triggersPopup указывает, приводит ли это событие к появлению раскрывающегося меню на данной платформе.
Обычно используемые методы в этом классе — getX() и getY(). Они возвращают (х, у)-координаты мыши, когда событие произошло. Их форматы:
int getX()
int getY()
Альтернативно, чтобы получить координаты мыши, можно использовать метод getPoint() с форматом:
Point getPoint()
Он возвращает объект Point, который содержит (х, у)-координаты в его целых членах х и у. Метод transiatePoint() изменяет положение события. Его формат:
void translatePoint(int х, int у)
Здесь аргументы х и у добавляются к координатам события.
Метод getclickCount() получает число щелчков мыши для этого события. Его сигнатура:
int getclickCount()
МетодisPopupTrigger() проверяет, приводит ли событие к появлению всплывающего меню на данной платформе. Его формат:
boolean isPopupTrigger()
Класс WindowEvent
Существует семь типов window-событий. Чтобы идентифицировать их, класс WindowEvent определяет следующие целые константы:
window_actwated. Окно активизировано.
window_closed. Окно закрыто.
window_closing. Пользователь потребовал, чтобы окно было закрыто.
window_deactwated. Окно деактивизировано.
window_deiconified. Окно развернуто из пиктограммы.
window_iconified. Окно свернуто в пиктограмму.
window_opened. Окно открыто.
WindowEvent — подкласс ComponentEvent и имеет следующий конструктор:
WindowEvent(Window src, int type)
где src— ссылка на компонент, который генерировал это событие; type указывает тип события.
В этом классе чаще всего используется метод getWindow(). Он возвращает window-объект, который сгенерировал событие. Его общая форма:
Window getWindow()