7.2 AWT Структура событий
В управлении событиями в Java, используется объектно-ориентированный подход, все события наследуются от класса
EventObject. Класс определен в пакете java.util.
EventObject имеет подкласс AWTEvent. AWTEvent - класс родитель для всех классов событий AWT.
Рисунок 7.2: Диаграмма наследования классов событий AWT
Эта диаграмма иллюстрирует схему наследования классов событий AWT. Фактически, мы можем создать наш класс, отвечающий за событие, как подкласс любого класса события AWT и
EventObject. EventObject - класс, инкапсулирующий в себе информацию о событии, которая передается от источника к слушателю. Мы можем получить информацию об источнике событий. Класс EventObject содержит два метода: getSource() и toString(). Метод getSource() возвращает объектную ссылку на источник события. Для определения типа события может использоваться метод getlD().
7.2.1 Типы событий AWT
При классификации событий необходимо упомянуть, что AWT делает различия между событиями
низкого уровня и
семантическими событиями. Если событие описывает действие пользователя ( например, нажатие кнопки ), - это семантическое событие; так событие ActionEvent - семантическое. События низкого уровня - события, которые делают это возможным. В пакете java.awt.event существуют четыре семантических события:
ActionEvent. AdjustmentEvent, ItemEvent, TextEvent. Таблица событий AWT:
Таблица 7.1: События
Каждый класс события имеет конструктор и методы. Далее идет подробное изложение о классах событий.
Класс ActionEvent: Имеет два конструктора:
ActionEvent(Object src, int type,String cmd)
ActionEvent(Object src, int type,String cmd,int modifiers )
В обоих определениях src - источник события, объектная ссылка на объект, генерирующий это событие. Второй параметр- type определяет тип события и параметр cmd показывает, какие клавиши (ALT, CTRL, МЕТА, и SHIFT) были нажаты при генерации события. Для определения, какие клавиши были нажаты, используйте метод getModifier().
Класс AdjustementEvent: Имеет один конструктор:
AdjustmentEvent(Adjustable src, int id, int type, int data)
Здесь, src - источник события, объектная ссылка на объект, генерирующий это событие, id содержит значение целого типа, путем сравнения его с константой ADJUSTMENT_VALUE_CHANGED можно узнать, какого рода изменение произошло.
Этот класс содержит метод
getAdjustable(), который возвращает объект, сгенерировавший событие. Его синтаксис:
Adjustable getAdjustable().
Класс ComponentEvent: Этот класс имеет один конструктор, один параметр - источник события, другой-тип события. Объявление:
ComponentEvent(Component src, int type)
Метод getComponent() возвращает компонент, сгенерировавший событие. Его синтаксис:
Component getComponent().
Класс
ComponentEvent суперкласс для ContainerEvent, FocusEvent, KeyEvent, MouseEvent и Window/Event.
Класс ContainerEvent: Конструктор этого класса:
ContainerEvent(Component src, int type, Component comp)
Поскольку этот класс наследовался от класса ComponentEvent, то он содержит все параметры конструктора класса ComponentEvent. В добавок к этому, конструктор имеет еще один параметр. Этот параметр - объектная ссылка на объект, который был добавлен или удален из контейнера ( src ). Объектную ссылку на контейнер ( src ) можно получить, используя метод getContainer(). Общий синтаксис,
Container getContainer().
Класс FocusEvent: Конструктор этого класса:
FocusEvent(Component src, int type)
FocusEvent(Component src, int type,boolean temporaryFlag)
Здесь,
src - источник события, объектная ссылка на объект, генерирующий это событие.
temporaryFlag показывает потерян ли фокус.
Класс InputEvent: Это абстрактный класс и подкласс
ComponentEvent. Он имеет два подкласса:
KeyEvent и MouseEvent.
Объекты класса KeyEvent генерируются при работе с клавиатурой. Существуют три типа событий, которые соответствуют трем константам: KEY_PRESSED, KEY_RELEASED, KEY_TYPED. Класс KeyEvent имеет два конструктора:
KeyEvent(Component src, int type,long when, int modifiers, int code)
KeyEvent(Component src, int type,long when, int modifiers, int code, char ch)
src - источник события. Тип события определяется параметром
type. Системное время, показывающее, когда произошло событие, -
when, modifier - определяет какая дополнительная - управляющая клавиша была нажата при наступлении события. Код нажатой клавиши -
code и символ нажатой клавиши -
ch.