Microsoft Visual J++. Создание приложений и аплетов на языке Java


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


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

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

public boolean handleEvent(Event evt);

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

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



Поле

Описание

public Object arg;

Произвольный аргумент события, значение которого зависит от типа события

public int clickCount;  

Это поле имеет значение только для события с типом MOUSE_DOWN и содержит количество нажатий на клавишу мыши. Если пользователь сделал двойной щелчок мышью, в это поле будет записано значение 2

public Event evt;

Следующее событие в связанном списке

public int id;

Тип события. Ниже мы перечислим возможные значения для этого поля

public int key;

Код нажатой клавиши (только для события, созданного при выполнении пользователем операции с клавиатурой)

public int modifiers;

Состояние клавиш модификации <Alt>, <Ctrl>, <Shift>

public Object target;

Компонент, в котором произошло событие

public long when;

Время, когда произошло событие

public int x;

Координата по оси X

public int y;

Координата по оси Y

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

Значение

Тип события

ACTION_EVENT

Пользователь хочет, чтобы произошло некоторое событие

GOT_FOCUS

Компонент (в нашем случае окно аплета) получил фокус ввода. О фокусе ввода вы узнаете из раздела, посвященного работе с клавиатурой

KEY_ACTION         

Пользователь нажал клавишу типа “Action”

KEY_ACTION_RELEASE

Пользователь отпустил клавишу типа “Action”

KEY_PRESS

Пользователь нажал обычную клавишу

KEY_RELEASE

Пользователь отпустил обычную клавишу

LIST_DESELECT

Отмена выделения элемента в списке

LIST_SELECT

Выделение элемента в списке

LOAD_FILE

Загрузка файла

LOST_FOCUS

Компонент потерял фокус ввода

MOUSE_DOWN

Пользователь нажал клавишу мыши

MOUSE_DRAG

Пользователь нажал клавишу мыши и начал выполнять перемещение курсора мыши

MOUSE_ENTER

Курсор мыши вошел в область окна аплета

MOUSE_EXIT

Курсор мыши покинул область окна аплета

MOUSE_MOVE

Пользователь начал выполнять перемещение курсора мыши, не нажимая клавишу мыши

MOUSE_UP

Пользователь отпустил клавишу мыши

SAVE_FILE

Сохранение файла

SCROLL_ABSOLUTE

Пользователь переместил движок полосы просмотра в новую позицию

SCROLL_LINE_DOWN

Пользователь выполнил над полосой просмотра операцию сдвига на одну строку вниз

SCROLL_LINE_UP

Пользователь выполнил над полосой просмотра операцию сдвига на одну строку вверх

SCROLL_PAGE_DOWN

Пользователь выполнил над полосой просмотра операцию сдвига на одну страницу вниз

SCROLL_PAGE_UP

Пользователь выполнил над полосой просмотра операцию сдвига на одну страницувверх

WINDOW_DEICONIFY

Пользователь запросил операцию восстановления нормального размера окна после его минимизации

WINDOW_DESTROY

Пользователь собирается удалить окно

WINDOW_EXPOSE

Окно будет отображено

WINDOW_ICONIFY

Окно будет минимизировано

WINDOW_MOVED

Окно будет перемещено

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

Значение

Клавиша

DOWN

Клавиша перемещения курсора вниз

END

<End>

F1

<F1>

F2

<F2>

F3

<F3>

F4

<F4>

F5

<F5>

F6

<F6>

F7

<F7>

F8

<F8>

F9

<F9>

F10

<F10>

F11

<F11>

F12

<F12>

HOME

<Home>

LEFT

Клавиша перемещения курсора влево

PGDN

<Page Down>

PGUP

<Page Up>

RIGHT

Клавиша перемещения курсора вправо

UP

Клавиша перемещения курсора вниз

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

Значение маски

Описание

ALT_MASK

Была нажата клавиша <Alt>

META_MASK          

Была нажата мета-клавиша (клавиша для ввода диактрических символов)

CTRL_MASK

Была нажата клавиша <Ctrl>

SHIFT_MASK

Была нажата клавиша <Shift>

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


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