|
Пользователь собирается удалить окноWINDOW_EXPOSE
Окно будет отображеноWINDOW_ICONIFYОкно будет минимизированоWINDOW_MOVEDОкно
будет перемещено
Если событие связано с клавиатурой (тип события KEY_ACTION или
KEY_ACTION_RELEASE), в поле key может находиться одно из следующих значений:
ЗначениеКлавишаDOWNКлавиша перемещения курсора внизENDF1F2F3F4
F5F6F7F8F9F10F11F12HOMELEFTКлавиша
перемещения курсора влевоPGDNPGUPRIGHTКлавиша перемещения
курсора вправоUPКлавиша перемещения курсора вниз
Могут быть указаны следующие маски для поля модификаторов modifiers:
Значение маскиОписаниеALT_MASKБыла нажата клавиша META_MASK Была нажата
мета-клавиша (клавиша для ввода диактрических символов)CTRL_MASKБыла нажата
клавиша SHIFT_MASKБыла нажата клавиша
Ваше приложение может переопределить метод handleEvent и обрабатывать
события самостоятельно, однако есть более простой путь. Обработчик этого метода,
который используется по умолчанию, вызывает несколько методов, которые более
удобны в использовании, в частности, при обработке событий от мыши или
клавиатуры.
События от мыши
В этом разделе мы рассмотрим события, которые возникают в результате того,
что пользователь выполняет в окне аплета операции с мышью. Это такие операции,
как нажатие и отпускание клавиши мыши, перемещение курсора мыши в окне аплета с
нажатой или отпущенной клавишей, перемещение курсора мыши в окно аплета и
удаление этого курсора из окна аплета.
Все перечисленные ниже методы должны вернуть значение true, если обработка
события выполнена успешно и дальнейшая обработка не требуется. Если же методы
вернут значение fasle, событие будет обработано методом из базового класса, то
есть для него будет выполнена обработка, принятая по умолчанию.
Программисты, создававшие приложения для операционной системы Microsoft
Windows, могут найти здесь аналогию с вызовом функции DefWindowProc, которая
выполняет обработку сообщений, принятую по умолчанию.
Нажатие клавиши мыши
Переопределив метод mouseDown, вы сможете отслеживать нажатия клавиши мыши.
Прототип этого метода приведен ниже:
public boolean mouseDown(Event evt, int x, int y);
Через параметр evt методу передается ссылка на объект Event, с помощью
которой метод может получить полную информацию о событии.
Анализируя содержимое параметров x и y, приложение может определить
координаты курсора на момент возникновения события.
Заметим, что для отслеживания двойного щелчка мыши не предусмотрено никакого
отдельного метода. Однако анализируя содержимое поля clickCount переменной evt,
вы можете определить кратность щелчка мыши:
if(evt.clickCount > 1)
// Двойной щелчок
showStatus("Mouse Double Click");
else
// Одинарный щелчок
showStatus("Mouse Down");
Отпускание клавиши мыши
При отпускании клавиши мыши управление получает метод mouseUp:
public boolean mouseUp(Event evt, int x, int y);
Анализируя параметры x и y, вы можете определить координаты точки, в которой
пользователь отпустил клавишу мыши.
Перемещение курсора мыши
Когда пользователь перемещает курсор мыши над окном аплета, в процессе
перемещения происходит вызов метода mouseMove:
public boolean mouseMove(Event evt, int x, int y);
Через переменные x и y передаются текущие координаты курсора мыши.
Выполнение операции Drag and Drop
Операция Drag and Drop выполняется следующим образом: пользователь нажимает
клавишу мыши и, не отпуская ее, начинает перемещать курсор мыши. При этом
происходит вызов метода mouseDrag:
public boolean mouseDrag(Event evt, int x, int y);
Через переменные x и y передаются текущие координаты курсора мыши. Метод
mouseDrag вызывается даже в том случае, если в процессе перемещения курсор
вышел за пределы окна аплета.
Вход курсора мыши в область окна аплета
Метод mouseEnter получает управление, когда курсор мыши в процессе
перемещения по экрану попадает в область окна аплета:
public boolean mouseEnter(Event evt, int x, int y);
Вы можете использовать этот метод для активизации аплета, на который
указывает курсор мыши.
Выход курсора мыши из области окна аплета
Метод mouseExit вызывается при покидании куросром окна аплета:
public boolean mouseExit(Event evt, int x, int y);
Если пользователь убрал курсор из окна аплета, активизированного методом
mouseEnter, то метод mouseExit может переключить аплет в пассивное состояние.
Приложение MouseClick
Аплет MouseClick демонстрирует обработку событий, поступающих от мыши.
Когда мы создавали проект этого аплета, то в третьей диалоговой панели
системы Java Applet Wizard включили три переключателя в поле Which mouse event
handlers would you like added (рис. 4.1).
Рис. 4.1. Включение обработчиков событий от мыши
В результате в исходный текст приложения были добавлены перечисленные выше
методы, обрабатывающие события, создаваемые мышью.
Мы изменили эти методы таким образом, чтобы в ответ на различные действия,
выполняемые пользователем с помощью мыши, аплет реагировал соответствующим
образом:
Действие пользователяРеакция аплетаПеремещение курсора мыши при отжатой клавише
ИгнорированиеПеремещение курсора мыши при нажатой клавишеВ ст
|
|