在图形用户界面中,用户经常使用鼠标来进行选择、切换界面等操作,这些操作被定义为鼠标事件,曲中包括鼠标按下、鼠标松开、鼠标单击等。JDK 中提供了一个 MouseEvent 类用于表示鼠标类事件,几乎所有的组件都可以产生鼠标事件。处理鼠标事件时,首先需要通过实现 MouseListener 接口定义监听器(也可以通过继承适配器 MouseAdapter 类来实现),然后调用 addMouseListener()方法将监听器绑定到事件源对象。
接下来通过一个案例来学习如何监听鼠标事件,如下所示。
import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;public class example12 {public static void main(String[] args) {final Frame frame = new Frame();//为窗口设置布局frame.setLayout(new FlowLayout());frame.setSize(300, 200);frame.setLocation(300, 200);frame.isVisible();//创建按钮对象Button btn = new Button();//在窗口添加按钮组件frame.add(btn);//为按钮注册鼠标事件监听器btn.addMouseListener(new MouseListener() {public void mouseReleased(MouseEvent e) {System.out.println("mouseReleased---鼠标放开事件");}public void mousePressed(MouseEvent e) {System.out.println("mousePressed---鼠标按下事件");}public void mouseExited(MouseEvent e) {System.out.println("mouseExited---鼠标移出按钮区域事件");}public void mouseEntered(MouseEvent e) {System.out.println("mouseEntered---鼠标加入按钮区事件");}public void mouseClicked(MouseEvent e) {System.out.println("mouseClicked---鼠标完成点击事件");}});}}
运行程序,生成的窗口,如下所示。
用鼠标对窗口上的按钮进行操作,把鼠标移进按钮区域。单击按钮然后释放,再移出按钮区域,控制台的输出如下。
从上图可以看出,当鼠标对按钮做出了相应的动作之后,监听器获取到相应的事件对象,从而打印出动作所对应的事件名称。
鼠标的操作分为左键单击双击和右键单击双击,而且还有滚轮,上面只给这些事件的处理,能满足需求吗?答案是肯定的,MouseEvent 类中定义了很多常量来标识鼠标动作。如下面的代码所示。
public void mouseClicked(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON1) {System.out.println("鼠标左击事件");}if (e.getButton() == MouseEvent.BUTTON3) {System.out.println("鼠标右击事件");}if (e.getButton() == MouseEvent.BUTTON2) {System.out.println("鼠标中击事件");}}
从上面的代码可以看出,MouseEvent 类中针对鼠标的按键都定义了对应的常量,可以通过 MouseEvent 对象的 getButton()方法获取被操作案按键的常量键值,从而判断是哪个按键的操作。另外,鼠标的单击次数也可以通过 MouseEvent 对象的 getClickCount()方法得到。因此,在鼠标事件中,可以根据不同的操作,做出相应的处理。
鼠标事件还有很多,这里就不做详细介绍了。
