MouseEvent事件
任何组件上都可以发生鼠标事件,如鼠标进入组件、退出组件、在组件上方单击鼠标、拖动鼠标等都触发鼠标事件,即导致MouseEvent类自动创建一个
事件对象,事件源注册监视器的方法是addMouseListener(MouseListener listener);
➊使用MouseIistener接口处理鼠标事件
使用MouseListener接口可以处理以下5种操作触发的鼠标事件:
在事件源上按下鼠标键。
在事件源上释放鼠标键
在事件源上单击鼠标。
鼠标进入事件源。
鼠标退出事件源。
MouseEvent类中有下列几个重要的方法
getX() 获取鼠标指针在事件源坐标系中的x坐标。
getY()获取鼠标指针在事件源坐标系中的y坐标。
●getModifiers()获取鼠标的左键或右键。鼠标的左键和右键分别使用inputEvent类中的常量BUTTONI MASK和BUTTON3 _MASK来表示
●getClickCount() 获取鼠标被单击的次数。
●getSource() 获取发生鼠标事件的事件源。
MouseListener接口中有如下方法:
●mousePressed(MouseEvent) 负责处理在组件上按下鼠标键触发的鼠标事件。即,当你在事件源按下鼠标键时,监视器调用接口中的这个方法对事件做出处理。
●mouseReleased(MouseEvent) 负责处理在组件上释放鼠标键触发的鼠标事件。即,当你在事件源释放鼠标键时,监视器调用按口中的这个方法对事件做出处理。
●mouseEntered(MouseEvenr) 负责处理鼠标进入组件触发的鼠标事件。即,当鼠标指针进入组件时,监视器调用接口中的这个方法对事件做出处理。
●mouseExited(MouseEvent)负责处理鼠标离开组件触发的鼠标事件。即,当鼠标指针离开容器时,监视器调用接口中的这个方法对事件做出处理。
●mouseClicked(MouseEvent)负责处理在组件上单击鼠标键触发的鼠标事件。即,当单击鼠标键时,监视器调用接I口中的这个方法对事件做出处理。
下面的例子10 中,分别监视按钮、文本框和窗口上的鼠标事件,当发生鼠标事件时,获取鼠标指针的坐标值,注意,事件源的坐标系的左上角是原点。
public class Example9_10 {
public static void main(String args[]) {
WindowMouse win=new WindowMouse();
win.setTitle("处理鼠标事件");
win.setBounds(10,10,560,380);
}
}
import java.awt.*;
import javax.swing.*;
public class WindowMouse extends JFrame {
/**
*
*/
JButton button;
JTextArea area;
MousePolice police;
WindowMouse() {
init();
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
void init() {
setLayout(new FlowLayout());
area = new JTextArea(10,28);
Font font = new Font("宋体",Font.PLAIN,22);
area.setFont(font);
police = new MousePolice();
police.setView(this);//将当前窗口传递给police组合的窗口
button = new JButton(