基本概念
监听器(Listener):监听器用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等等。
ActionListener:ActionListener用于接收操作事件的侦听器接口。对处理操作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的 addActionListener 方法向该组件注册。在发生操作事件时,调用该对象的 actionPerformed 方法。
MouseListener:处理鼠标事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 MouseAdapter(仅重写所需的方法)。 然后使用组件的 addMouseListener 方法将从该类所创建的侦听器对象向该组件注册。当按下、释放或单击(按下并释放)鼠标时会生成鼠标事件。鼠标光标进入或离开组件时也会生成鼠标事件。发生鼠标事件时,将调用该侦听器对象中的相应方法,并将 MouseEvent 传递给该方法。
MouseAdapter:用于接收鼠标事件的抽象适配器类。 这个类中的方法是空的。 此类作为创建侦听器对象的方便而存在。
开发环境
JAVA 1.8
Eclipse 201803
源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUIDEMO {
public static void main(String[] args) {
// TODO 自动生成的方法存根
EventQueue.invokeLater(() ->
{
JFrame frame = new MyFrame();
frame.setTitle("DrawTest");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
});
System.out.println("Hello World");
}
public void print(Object obj) {
System.out.println(obj);
}
}
class MyFrame extends JFrame {
private static final int DEFAULT_WIDTH = 400;
private static final int DEFAULT_HEIGHT = 400;
public MyFrame() {
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
setLocation(100,200);
setLayout(new FlowLayout());
JButton but=new JButton("DEMOButton");
but.addActionListener(event-> {
print("action");
});
but.addMouseListener(new MouseAdapter(){
public void mouseEntered(MouseEvent e) {
print("enter");
}
public void mouseExited(MouseEvent e) {
print("exit");
}
public void mouseClicked(MouseEvent e) {
print("click");
}
});
add(but);
}
public void print(Object obj) {
System.out.println(obj);
}
public Dimension getPreferredSize() { return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT); }
}
运行结果
结论
ActionListener先于MouseListener执行
注:某教学视频中在JAVA 1.6环境下ActionListener后于MouseListener执行。
参考文章
https://www.cnblogs.com/zmwf/p/9103207.html
https://zhidao.baidu.com/question/1705828684187412460.html
今天的文章JAVA——监听器ActionListener与MouseListener执行顺序分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11702.html