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

Оглавление

События
Обработка событий
События от мыши
Аплет LineDraw
Исходный текст
Описание текста

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

Назад Вперед

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

Назад Вперед

Java | Продукты и решения | Технологии | Сервис и обучение
О компании | Партнеры | Новости | Поиск