Назад
Вперед
2.9. Аплет с обработкой событий
На простом примере мы демонстрируем структуру
аплета с обработкой событий, связанных с мышью. В
своем окне алпет отображает координаты курсора в
момент щелчка левой клавшии мыши.
Исходный текст примера
Архив проекта для Java WorkShop 2.0
Демонстрация
(ваш браузер должен уметь работать с аплетами
Java)
Немного теории
Приложения Java были бы бесполезными, если бы не
могли обрабатывать события, связанные с
действиями пользователя: перемещение мыши, ввод
с клавиатуры и так далее.
Добавить обработку событий в аплет очень легко.
Для этого в главном классе аплета достаточно
переопределить метод handleEvent. Когда возникает
какое-либо событие (например, пользователь
расположил курсор над окном аплета или сделал
щелчок мышью в области этого окна), метод handleEvent
получает управление. Ему передается объект
класса Event, свойства которого описывают
возникшее событие.
Например, свойство id содержит тип события,
свойства x и y - координаты, имеющие отношение к
событию.
Для обработки событий, связанных с мышью,
удобнее переопределять другие, менее
универсальные методы. Эти методы предусмотрены в
базовом классе Component, от которого
"произошел" класс Applet.
Если вам нужно отслеживать нажатия на клавиши
мыши, переопределите метод mouseDown, если отпускание
этих клавиш - метод mouseUp, перемещение - mouseMove и так
далее.
Описание примера
Наш аплет выполняет простую функцию: он
отслеживает щелчки левой клавишей мыши в своем
окне и отображает возле курсора мыши его
координаты в квадратных скобках (рис. 1).
Рис. 1. Окно аплета EventProc
Каждый раз когда пользователь щелкает мышью
внутри окна аплета, окно перерисовывается
заново.
Рассмотрим исходный текст аплета.
В главном классе аплета EventProc определено поле ev
класса Event, методы init, getAppletInfo, paint
и mouseDown. Для нас сейчас интересны только два
последних из них, с остальными вы разберетесь
самостоятельно.
Метод paint
В главном классе нашего аплета определено поле
ev, предназначенное для временного хранения
объектов-событий. При инициализации мы
записываем в это поле значение null:
Event ev = null;
Когда происходит перерисовка окна, метод paint
проверяет содержимое поля ev. Если оно не равно null,
метод рисует строку вида [x, y] в точке, где
находился курсор мыши в момент возникновения
события:
public void paint(Graphics g)
{
if(ev != null)
{
g.drawString("[" + ev.x + "," +
ev.y + "]", ev.x, ev.y);
}
}
Координаты этой точки хранятся в полях x и y
объекта ev.
Метод mouseDown
При возникновении события, связанного с
нажатием клавиши мыши, метод handleEvent вызывает
метод mouseDown. В нашем аплете мы переопределили
метод mouseDown следующим образом:
public boolean mouseDown(
Event evt, int x, int y)
{
ev = evt;
repaint();
return true;
}
Получив ссылку на объект-событие evt, наша
реализация метода mouseDown сохраняет ее в поле ev, а
затем перерисовывает окно аплета с помощью
метода repait. Выполнив обработку события, метод
возвращает значение true. В результате для него не
будет выполняться обработка, принятая по
умолчанию в методе mouseDown базового класса Component.
Назад Вперед |