千家信息网

Java监听器ActionListener与MouseListener的执行顺序是什么

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要介绍"Java监听器ActionListener与MouseListener的执行顺序是什么",在日常操作中,相信很多人在Java监听器ActionListener与MouseListen
千家信息网最后更新 2025年01月16日Java监听器ActionListener与MouseListener的执行顺序是什么

这篇文章主要介绍"Java监听器ActionListener与MouseListener的执行顺序是什么",在日常操作中,相信很多人在Java监听器ActionListener与MouseListener的执行顺序是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java监听器ActionListener与MouseListener的执行顺序是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

基本概念

  • 监听器(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执行。

鼠标监听器和动作监听器区别和联系

1.英文名:MouseListener和ActionListener

  • 同为接口,继承同一个父类EventListenr

  • 用时需定义类实现接口

2.作用

  • MouseListener:可用于鼠标的单击、按下、释放、进入、离开,可以用于界面、组件类

  • ActionListener:用于组件上面(JPanel不可以,JFrame也不可以,JLabel也不可以)

  • JButton可以,JTextField也可以

3.区别

  • MouseListener在功能上更加多样化,在加的对象上也更有选择性更广泛;

  • ActionListener在功能上相对单一,只能适用于几种简单的组件上且都为单击事件。

  • ActiMouseListener有e.getActionCommand()方法,而ActionListener没有,所以不能判断

究竟按下或者释放的是哪个按钮,所以按钮多的话,不能用MouseListener。

 //MouseListener部分:                 public void mousePressed(MouseEvent e) {                     // TODO Auto-generated method stub                     g.setColor(Color.blue);                     draw(100,400,400,400,400,100,10);                     draw(400,100,400,400,700,400,10);                     draw(700,400,400,400,400,700,10);                     draw(400,700,400,400,100,400,10);                 }                         //同样的功能ActionListener部分:                         if(e.getActionCommand().equals("谢宾斯基三角形")){                         g.setColor(Color.blue);                         draw(100,400,400,400,400,100,10);                         draw(400,100,400,400,700,400,10);                         draw(700,400,400,400,400,700,10);                         draw(400,700,400,400,100,400,10);                         }

到此,关于"Java监听器ActionListener与MouseListener的执行顺序是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0