Как обрабатываются события
Когда возникает событие,
управление получает метод 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 и обрабатывать события самостоятельно,
однако есть более простой путь. Обработчик этого метода,
который используется по умолчанию, вызывает несколько методов,
которые более удобны в использовании, в частности, при обработке
событий от мыши или клавиатуры.