Java * ActionListener与MouseListener的执行顺序说明

作者:Starzkg 时间:2022-02-04 20:08:23 

基本概念

  • * (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); }
}

运行结果

Java * ActionListener与MouseListener的执行顺序说明

Java * ActionListener与MouseListener的执行顺序说明

小结一下

ActionListener先于MouseListener执行

注:某教学视频中在JAVA 1.6环境下ActionListener后于MouseListener执行。

鼠标 * 和动作 * 区别和联系

Java * 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的执行顺序说明

来源:https://shentuzhigang.blog.csdn.net/article/details/103109671

标签:Java, , ,ActionListener,MouseListener,执行顺序
0
投稿

猜你喜欢

  • 浅谈Java三目运算

    2023-11-29 07:27:59
  • MyBatis-Plus找不到Mapper.xml文件的几种解决方法

    2023-11-24 03:37:52
  • C#怎样才能将XML文件导入SQL Server

    2022-02-16 17:51:13
  • 简单了解JAVA public class与class区别

    2023-11-15 23:59:26
  • java中timer的schedule和scheduleAtFixedRate方法区别详解

    2023-05-25 10:47:45
  • Java经典面试题最全汇总208道(六)

    2023-11-23 17:52:45
  • C#中XmlTextWriter读写xml文件详细介绍

    2022-01-26 05:13:48
  • SpringBoot自定义starter实例代码

    2021-09-04 14:28:06
  • Java 栈和队列的相互转换详解

    2021-09-22 05:00:12
  • java多线程Synchronized实现可见性原理解析

    2021-08-26 02:10:02
  • C#实现温度转换功能

    2021-10-06 22:54:18
  • Java SpringSecurity+JWT实现登录认证

    2022-12-13 16:44:18
  • Windows实现Flutter环境搭建及配置这一篇就够了

    2023-07-03 22:49:30
  • Spring Security基本原理详解

    2022-12-24 15:57:54
  • JPA中EntityListeners注解的使用详解

    2023-08-04 21:39:18
  • Java超详细分析泛型与通配符

    2023-07-28 08:34:26
  • java前后端加密解密crypto-js的实现

    2023-11-29 12:09:31
  • Mybatis关于动态排序 #{} ${}问题

    2023-09-01 17:34:57
  • 教你如何使用Java输出各种形状

    2023-08-21 00:46:55
  • 深入JAVA对象深度克隆的详解

    2022-01-05 14:03:13
  • asp之家 软件编程 m.aspxhome.com