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