Подробное руководство по программированию на Java

         

Как обрабатываются события



Как обрабатываются события

Когда возникает событие, управление получает метод handleEvent из класса Component. Класс Applet является дочерним по отношению к классу Component.

Прототип метода handleEvent мы привели ниже:

public boolean handleEvent(Event evt);

В качестве параметра методу handleEvent передается объект класса Event, который содержит всю информацию о событии. По содержимому полей класса Event вы можете определить координаты курсора мыши в момент, когда пользователь нажал клавишу, отличить одинарный щелчок от двойного и так далее.

Ниже мы привели список полей класса Event, которые вы можете проанализировать:

Поле Описание
public Object argarg; Произвольный аргумент события, значение которого зависит от типа события
public int clickCountclickCount; Это поле имеет значение только для события с типом MOUSE_DOWNMOUSE_DOWN и содержит количество нажатий на клавишу мыши. Если пользователь сделал двойной щелчок мышью, в это поле будет записано значение 2
public Event evtevt; Следующее событие в связанном списке
public int idid; Тип события. Ниже мы перечислим возможные значения для этого поля
public int keykey; Код нажатой клавиши (только для события, созданного при выполнении пользователем операции с клавиатурой)
public int modifiersmodifiers; Состояние клавиш модификации <Alt>, <Ctrl>, <Shift>
public Object targettarget; Компонент, в котором произошло событие
public long whenwhen; Время, когда произошло событие
public int xx; Координата по оси X
public int yy; Координата по оси Y

Поле id (тип события) может содержать следующие значения:

Значение Тип события
ACTION_EVENTACTION_EVENT Пользователь хочет, чтобы произошло некоторое событие
GOT_FOCUSGOT_FOCUS Компонент (в нашем случае окно аплета) получил фокус ввода. О фокусе ввода вы узнаете из раздела, посвященного работе с клавиатурой
KEY_ACTIONKEY_ACTION Пользователь нажал клавишу типа "Action"
KEY_ACTION_RELEASEKEY_ACTION_RELEASE Пользователь отпустил клавишу типа "Action"
KEY_PRESSKEY_PRESS Пользователь нажал обычную клавишу
KEY_RELEASEKEY_RELEASE Пользователь отпустил обычную клавишу
LIST_DESELECTLIST_DESELECT Отмена выделения элемента в списке
LIST_SELECTLIST_SELECT Выделение элемента в списке
LOAD_FILELOAD_FILE Загрузка файла
LOST_FOCUSLOST_FOCUS Компонент потерял фокус ввода
MOUSE_DOWNMOUSE_DOWN Пользователь нажал клавишу мыши
MOUSE_DRAGMOUSE_DRAG Пользователь нажал клавишу мыши и начал выполнять перемещение курсора мыши
MOUSE_ENTERMOUSE_ENTER Курсор мыши вошел в область окна аплета
MOUSE_EXITMOUSE_EXIT Курсор мыши покинул область окна аплета
MOUSE_MOVEMOUSE_MOVE Пользователь начал выполнять перемещение курсора мыши, не нажимая клавишу мыши
MOUSE_UPMOUSE_UP Пользователь отпустил клавишу мыши
SAVE_FILESAVE_FILE Сохранение файла
SCROLL_ABSOLUTESCROLL_ABSOLUTE Пользователь переместил движок полосы просмотра в новую позицию
SCROLL_LINE_DOWNSCROLL_LINE_DOWN Пользователь выполнил над полосой просмотра операцию сдвига на одну строку вниз
SCROLL_LINE_UPSCROLL_LINE_UP Пользователь выполнил над полосой просмотра операцию сдвига на одну строку вверх
SCROLL_PAGE_DOWNSCROLL_PAGE_DOWN Пользователь выполнил над полосой просмотра операцию сдвига на одну страницу вниз
SCROLL_PAGE_UPSCROLL_PAGE_UP Пользователь выполнил над полосой просмотра операцию сдвига на одну страницувверх
WINDOW_DEICONIFYWINDOW_DEICONIFY Пользователь запросил операцию восстановления нормального размера окна после его минимизации
WINDOW_DESTROYWINDOW_DESTROY Пользователь собирается удалить окно
WINDOW_EXPOSEWINDOW_EXPOSE Окно будет отображено
WINDOW_ICONIFYWINDOW_ICONIFY Окно будет минимизировано
WINDOW_MOVEDWINDOW_MOVED Окно будет перемещено

Если событие связано с клавиатурой (тип события KEY_ACTION или KEY_ACTION_RELEASE), в поле key может находиться одно из следующих значений:

Значение Клавиша
DOWNDOWN Клавиша перемещения курсора вниз
ENDEND <End>
F1F1-F12 <F1>
F2 <F2>
F3 <F3>
F4 <F4>
F5 <F5>
F6 <F6>
F7 <F7>
F8 <F8>
F9 <F9>
F10 <F10>
F11 <F11>
F12 <F12>
HOMEHOME <Home>
LEFTLEFT Клавиша перемещения курсора влево
PGDNPGDN <Page Down>
PGUPPGUP <Page Up>
RIGHTRIGHT Клавиша перемещения курсора вправо
UPUP Клавиша перемещения курсора вниз

Могут быть указаны следующие маски для поля модификаторов modifiers:

Значение маски Описание
ALT_MASKALT_MASK Была нажата клавиша <Alt>
META_MASKMETA_MASK Была нажата мета-клавиша (клавиша для ввода диактрических символов)
CTRL_MASKCTRL_MASK Была нажата клавиша <Ctrl>
SHIFT_MASKSHIFT_MASK Была нажата клавиша <Shift>

Ваше приложение может переопределить метод handleEvent и обрабатывать события самостоятельно, однако есть более простой путь. Обработчик этого метода, который используется по умолчанию, вызывает несколько методов, которые более удобны в использовании, в частности, при обработке событий от мыши или клавиатуры.




Содержание раздела