Читайте также: |
|
События мыши могут перехватываться любым компонентом GUI, потомком класса java. awt. Component. Для обработки событий мыши используются интерфейсы слушателей событий MouseListener и MouseMotionListener. Рассмотри их методы:
MouseListener – интерфейс:
public void mousePressed (MouseEvent event) – вызывается при нажатии кнопки мыши на компоненте.
public void mouseClicked (MouseEvent event) – вызывается при отпускании кнопки над компонентом без перемещения курсора (следует за mousePressed).
public void mouseReleased (MouseEvent event) – при отпускании кнопки (следует за mousePressed).
public void mouseEntered (MouseEvent event) – вызывается когда курсор входит в границы компонента.
public void mouseExited (MouseEvent event) – когда выходит за границы компонента.
MouseMotionListener – интерфейс:
public void mouseDragged (MouseEvent event) – вызывается, если кнопка мыши нажата и удерживается, а курсор передвигается (другим словом, перетаскивание), (следует за mousePressed и предшествует Released).
public void mouseMoved (MouseEvent event) – вызывается при передвижении мыши над компонентом, без нажатия.
Каждый из методов обработки событий мыши принимает в качестве аргумента объект MouseEvent. Объект MouseEvent содержит информацию о событиях мыши, включая x- и y- координаты указателя. Методы обработки событий мыши вызываются автоматически в тот момент, когда мышь взаимодействует с компонентом, если слушатели событий зарегистрированы для данного компонента.
Рассмотрим приложение, которое демонстрирует методы интерфейсов MouseMotionListener и MouseListener. Класс приложения реализует оба интерфейса, таким образом, он может обрабатывать события мыши.
// MouseTracker.java
1 import java.awt.*;
2 import java.awt.event.*;
3 import javax.swing.*;
4 public class MouseTracker extends JFrame
5 implements MouseListener, MouseMotionListener {
6 private JLabel statusBar;
7 public MouseTracker(){
8 super("Обработка событий мыши");
9 statusBar=new JLabel();
10 getContentPane().add(statusBar,BorderLayout.SOUTH);
11 addMouseListener(this);
12 addMouseMotionListener(this);
13 setSize(250,100);
14 setVisible(true);
15 }
16 public void mouseClicked(MouseEvent event){
17 statusBar.setText("Щелчок в точке ["+event.getX()
+","+event.getY()+"]");
18 }
19 public void mousePressed(MouseEvent event){
20 statusBar.setText("Нажатие в точке ["+event.getX()
+","+event.getY()+"]");
21 }
22 public void mouseReleased(MouseEvent event){
23 statusBar.setText("Кнопка отпущена в точке
["+event.getX() +","+event.getY()+"]");
24 }
25 public void mouseEntered(MouseEvent event){
26 JOptionPane.showMessageDialog(null,"мышь в окне");
27 }
28 public void mouseExited(MouseEvent event){
29 statusBar.setText("мышь вышла из окна");
30 }
31 public void mouseDragged(MouseEvent event){
32 statusBar.setText("Перетаскивание в точку
["+event.getX() +","+event.getY()+"]");
33 }
34 public void mouseMoved(MouseEvent event){
35 statusBar.setText("Перемещение в точку
["+event.getX() +","+event.getY()+"]");
36 }
37 public static void main(String args[]){
38 MouseTracker app=new MouseTracker();
39 app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
40 }
41 }
Рис 20.5 Результат обработки событий мыши
В строках 11-12 регистрируется объект окна MouseTracker в качестве слушателя своих событий мыши (слово this означает, что слушателем является текущее окно). При попадании мыши в область окна приложения или выхода из нее вызывается метод mouseEntered (строки 25-27)или mouseExited (строки 28-30)соответственно. При этом выводится соответствующее сообщение в метке statusBar. Аналогично, при перемещении указателя, нажатии кнопки мыши, щелчке мыши в окне вызывается метод mouseMoved (строки 34-36) или mousePressed (строки 19-21)или mouseClicked (строки 16-18) соответственно. Результат выполнения каждого из перечисленных методов можно увидеть на рисунке 20.5.
Дата добавления: 2015-10-29; просмотров: 131 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Слушатели (listeners) полей и кнопок. | | | Классы адаптеры |