|
Как обрабатываются события
Когда возникает событие, управление получает метод 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 и обрабатывать события самостоятельно, однако есть более простой путь. Обработчик этого метода, который используется по умолчанию, вызывает несколько методов, которые более удобны в использовании, в частности, при обработке событий от мыши или клавиатуры.
[ ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ ]
|