Интерфейс MouseListener и обработка событий от мыши
События от мыши – один из самых популярных типов событий. Практически любой элемент управления способен сообщить о том, что на него навели мышь, щелкнули по нему и т.д. Об этом будут оповещен все зарегистрированные слушатели событий от мыши.
Так например, кнопка для входа в систему из примера реализации окна входа в систему должна реагировать на щелчок по ней, проверяя имя и пароль, введенные пользователем.
Слушатель событий от мыши должен реализовать интерфейс MouseListener. В этом интерфейсе перечислены следующие методы:
public void mouseClicked(MouseEvent event) – выполнен щелчок мышкой на наблюдаемом объекте;
public void mouseEntered(MouseEvent event) – курсор мыши вошел в область наблюдаемого объекта;
public void mouseExited(MouseEvent event) – курсор мыши вышел из области наблюдаемого объекта;
public void mousePressed(MouseEvent event) – кнопка мыши нажата в момент, когда курсор находится над наблюдаемым объектом;
public void mouseReleased(MouseEvent event) – кнопка мыши отпущена в момент, когда курсор находится над наблюдаемым объектом.
Каждый из этих методов получает параметр типа MouseEvent, через который передается дополнительная информация о возникшем событии.
Например, можно получить объект, вызвавший данное событие, командой event.getSource() (не забывайте, что один и тот же слушатель может быть зарегистрирован в нескольких объектах и иногда ему может понадобиться узнать, какой именно из них вызвал данный метод).
Метод getPoint() вернет координаты точки, в которой находился курсор мыши, когда было инициировано событие.
Метод getClickCount() возвращает число сделанных подряд щелчков (имеет смысл только для mouseClicked() и позволяет особым образом обработать двойной, тройной и т.п. щелчок).
Чтобы обработать нажатие на кнопку, требуется описать класс, реализующий интерфейс MouseListener, причем метод mouseClicked() должен содержать обработчик события. Далее необходимо создать объект этого класса и зарегистрировать его как слушателя кнопки. Для регистрации слушателя используется метод addMouseListener(MouseListener listener).
(ПОСЛЕДНИЙ ПРИМЕР ИЗ ПРЕДЫДУЩЕЙ ГЛАВЫ стр 106)
Опишем класс слушателя в пределах класса окна SimpleWindow, после конструктора. Обработчик события будет проверять, ввел ли пользователь логин «Иван» (пароль проверять не будем) и выводить сообщение об успехе или неуспехе входа в систему:
class MouseL implements MouseListener {
public void mouseClicked(MouseEvent event) {
if (loginField.getText().equals("Иван"))
JOptionPane.showMessageDialog(null, "Вход выполнен");
else
JOptionPane.showMessageDialog(null, "Вход НЕ выполнен");
}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
public void mousePressed(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
}
Слушатель реализован вложенным классом класса SimpleWindow, чтобы он мог легко получить доступ к его внутренним полям loginField и passwordField. Кроме того, хотя реально обрабатываеся только одно из пяти возможных событий мыши, описывать приходится все пять методов (четыре имеют пустую реализацию). Дело в том, что в противном случае класс пришлось бы объявить абстрактным (ведь он унаследовал от интерфейса пустые заголовки методов) и нет возможности создать объект этого класса. А создать объект слушателя и прикрепить его к кнопке необходимо. Для этого в код конструктора SimpleWindow() необходимо добавить команду:
ok.addMouseListener(new MouseL());
Это можно сделать сразу после команды:
JButton ok = new JButton("OK");
Дата добавления: 2017-01-26; просмотров: 1744;