Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Библиотека примеров приложений Java

Оглавление
Консольное приложение

Простейший аплет
Аплет с параметрами
Комбинированное приложение
Консольное с окном Frame
Аплет с окном Frame
Комбинированное с окном Frame
Библиотека классов
Аплет с обработкой событий
Консольное с обработкой событий

Назад Вперед

2.9. Аплет с обработкой событий

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

Исходный текст примера

Архив проекта для Java WorkShop 2.0

Демонстрация
(ваш браузер должен уметь работать с аплетами Java)

Немного теории

Приложения Java были бы бесполезными, если бы не могли обрабатывать события, связанные с действиями пользователя: перемещение мыши, ввод с клавиатуры и так далее.

Добавить обработку событий в аплет очень легко. Для этого в главном классе аплета достаточно переопределить метод handleEvent. Когда возникает какое-либо событие (например, пользователь расположил курсор над окном аплета или сделал щелчок мышью в области этого окна), метод handleEvent получает управление. Ему передается объект класса Event, свойства которого описывают возникшее событие.

Например, свойство id содержит тип события, свойства x и y - координаты, имеющие отношение к событию.

Для обработки событий, связанных с мышью, удобнее переопределять другие, менее универсальные методы. Эти методы предусмотрены в базовом классе Component, от которого "произошел" класс Applet.

Если вам нужно отслеживать нажатия на клавиши мыши, переопределите метод mouseDown, если отпускание этих клавиш - метод mouseUp, перемещение - mouseMove и так далее.

Описание примера

Наш аплет выполняет простую функцию: он отслеживает щелчки левой клавишей мыши в своем окне и отображает возле курсора мыши его координаты в квадратных скобках (рис. 1).

pic1.gif (1199 bytes)

Рис. 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.

Назад Вперед

[Назад]