Java中的事件(动作监听-ActionListener)

ops/2024/9/23 16:32:03/

(一)、ActionListener接口

ActionListener接口用于处理用户界面上的动作事件,例如:按钮点击、菜单选择等。实现ActionListener接口需要重写actionPerformed(ActionEvent e)方法,该方法会在动作发生时被调用。

(二)、两种方式为按钮或者菜单等添加动作监听事件

1、 使用匿名内部类的形式

使用匿名内部类的形式为按钮添加动作监听时,每一个按钮添加的事件要写一个匿名内部类,适用于单个事件
例如:
下面有一个JFrame(MyJFrame继承JFrame)和一个测试类用于创建窗口:
MyJframe:

java">public class MyJFrame extends JFrame {JButton jtb1 = new JButton("点我啊");public MyJFrame() {this.setSize(603, 680);this.setTitle("按钮点击事件测试");this.setLayout(null);   取消默认组件的居中放置,只有取消了,组件在界面中才会按照XY轴的形式添加//设置按钮宽高和位置jtb1.setBounds(0, 0, 100, 50);//给按钮绑定鼠标事件jtb1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("我被点击了");}});//将按钮添加到整个界面中this.getContentPane().add(jtb1);this.setVisible(true);}
}

重点详解:
在MyJFrame类中创建了按钮“jtb1”,然后经过简单的位置和大小设置后,给按钮绑定了鼠标动作监听事件

java">jtb1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("我被点击了");}});

jtb1.addActionListener 表示要给按钮jtb1 添加ActionListener事件,addActionListener()方法中的参数是ActionListener接口对象,这里将ActionListener接口的实现类对象作为参数传递进去后,addActionListener方法体中就会调用所传递的参数的actionPerformed方法,这里用到了接口多态的概念。
所以将使用该匿名内部类作为参数进行传递,然后会执行actionPerformed方法,在该方法中写入动作发生后的逻辑

测试类:

java">public class MyJFrameTest {public static void main(String[] args) {new MyJFrame();}
}

执行后打开窗口如下所示
在这里插入图片描述

当点击按钮后控制台会打印出点击后的事件
在这里插入图片描述

2、 本类实现ActionListener接口的形式

让MyJFrame实现ActionListener接口,本类中要重写接口中的所有方法,当按钮绑定事件后被点击后,会执行actionPerformed方法
例如:
下面有一个JFrame(MyJFrame继承JFrame并实现了ActionListener接口)和一个测试类用于创建窗口:
MyJframe:

java">public class MyJFrame extends JFrame implements ActionListener{JButton jtb1 = new JButton("按钮1");JButton jtb2 = new JButton("按钮2");public MyJFrame() {this.setSize(603, 680);this.setTitle("按钮点击事件测试");this.setLayout(null);   取消默认组件的居中放置,只有取消了,组件在界面中才会按照XY轴的形式添加//设置按钮宽高和位置jtb1.setBounds(0, 0, 100, 50);jtb2.setBounds(100, 0, 100, 50);//给按钮绑定鼠标事件jtb1.addActionListener(this);jtb2.addActionListener(this);//将按钮添加到整个界面中this.getContentPane().add(jtb1);this.getContentPane().add(jtb2);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {if (e.getSource()==jtb1){System.out.println("按钮1被点击了");} else if (e.getSource()==jtb2) {System.out.println("按钮2被点击了");}}}

重点详解:
在MyJFrame类中创建了两个按钮jtb1jtb2,然后经过简单的位置和大小设置后,给两个按钮绑定了鼠标动作监听事件,jtb1.addActionListener(this);为什么传递的参数是this呢,即本类对象。
首先MyJFrame实现了ActionListener接口,然后也重写了接口中的方法actionPerformed(ActionEvent e)方法。那么MyJFrame就成为了ActionListener接口的实现类,而在addActionListener()方法中所要传递的参数本就是ActionListener接口的实现类,所以当MyJFrame实现了接口后,在按钮绑定监听事件后只需要将本类对象作为参数进行传递就行了,然后当按钮被点击后,就会调用接口的实现类(也就是本类)的对象中的actionPerformed方法。
然后e.getSource()去获得是哪个按钮,进行判断,根据不同的按钮事件进行不同的逻辑处理。

测试类:

java">public class MyJFrameTest {public static void main(String[] args) {new MyJFrame();}
}

执行后打开窗口如下所示
在这里插入图片描述
当点击按钮1会执行System.out.println(“按钮1被点击了”);
当点击按钮2会执行System.out.println(“按钮2被点击了”);
在这里插入图片描述


http://www.ppmy.cn/ops/114859.html

相关文章

数据库基础知识---------------------------(3)

MYSQL的索引 用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行。按实现方式分为Hash索引和BTree索引 单列索引 普通索引 允许在定义索引的列中插入重复值和空值唯一索引 索引列的值必…

如何选购笔记本电脑?要看哪些参数?

如何选购笔记本电脑?要看哪些参数? 文章目录 如何选购笔记本电脑?要看哪些参数?1、CPU(中央处理器)2、GPU(显卡)3、RAM(内存)4、硬盘5、屏幕6、散热7、接口8、…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.AVL树

1.AVL 树 1.1AVL 树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查 找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962…

前端常用的主流框架有哪些

前端开发中,有几个主流框架非常受欢迎,它们为开发者提供了丰富的功能和高效的开发体验。以下是一些当前最常用的前端主流框架: React: React 是由 Facebook 开发的一个用于构建用户界面的 JavaScript 库。它鼓励使用组件化的开发模…

WinCC flexible配方与PLC的同步

1配方术语的含义 配方变量:配方画面上通过输入/输出域显示配方成分的数值; 图1. 配方条目数值:配方视图中用于显示配方成分的数值,即配方每条数据记录的数值; 图2. 激活同步变量”Synchronize tags”: 需…

【C++】哈希桶

前言 哈希桶是哈希表中用于存储数据的基本单元,也称为哈希槽或存储桶。 哈希桶(Hash Bucket)** 是哈希表数据结构中的一个概念。、哈希表通过哈希函数将输入数据映射到一个存储位置,而哈希桶就是这些存储位置中的一个单元。哈希桶…

MyBatis XML映射文件编写【后端 18】

MyBatis XML映射文件编写 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs …

Python办公自动化教程(002):PDF的拆分与合并

1、PyPDF2 介绍 介绍: PyPDF2是一个用于处理PDF文件的Python库,它提供了丰富的功能来读取、编辑、合并、拆分PDF文档,以及提取文本、图像和其他内容。 功能: 读取PDF:PyPDF2可以轻松地打开和读取PDF文件,获…