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

(一)、ActionListener接口

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

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

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

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

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”,然后经过简单的位置和大小设置后,给按钮绑定了鼠标动作监听事件

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

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

测试类:

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

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

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

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

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

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()去获得是哪个按钮,进行判断,根据不同的按钮事件进行不同的逻辑处理。

测试类:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147980.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【波束管理】

波束管理 5G的三大场景eMBBURLLCmMTC 波束赋形MIMO初始波束建立 5G的三大场景 eMBB 即“增强移动带宽”。 就是以人为中心的应用场景,集中表现为超高的传输速率,广覆盖的移动性保证等。 这是最直接改善移动网速,未来更多的应用对移动网速的…

ssl证书中,什么是根证书,中间证书,证书连又是什么

在 SSL/TLS 证书体系中,根证书(Root Certificate)、中间证书(Intermediate Certificate)、证书链(Certificate Chain)都是至关重要的概念,它们构成了整个证书验证的体系结构&#xf…

中小微企业生产管理利器-- 超轻量生产工单系统

为解决中小微制造企业的生产管理难题,搭贝官方自主设计并推出了一款开箱即用的超轻量「生产工单系统」应用。该系统具备5分钟上手,3小时落地的优势,无需实施即可轻松实现生产任务的敏捷管理,同时支持自定义修改,能够适…

提升用户体验的秘诀,Xinstall让二维码与应用内页面无缝对接

随着移动互联网的飞速发展,二维码已成为我们日常生活中不可或缺的一部分。然而,你是否曾遇到过扫描二维码后,仅能打开应用首页,而无法直接跳转到目标页面的困扰?这不仅影响了用户体验,也降低了应用的使用效…

【LLM论文日更】| GRIT如何统一文本生成与嵌入

论文:https://arxiv.org/pdf/2404.05961代码:https://github.com/McGill-NLP/llm2vec机构:McGill University, Mila ServiceNow Research ,Facebook CIFAR AI Chair领域:embedding model发表:COLM 2024 研…

民主测评系统可以解决哪些问题?

民主测评系统是可以把整个民主测评工作方案的测评流程、评价项目与评价结果都挪到系统上,进行调整和管理,能灵活满足事业单位对民主测评管理需求。通过运用线上民主测评系统可大大提升测评工作效率,减轻干部测评的工作量。 1、提高工作效率 …

weblogic中间件漏洞复现

后台弱口令getshell 1.开启环境 cd vulhub-master/weblogic/weak_password docker-compose up -d docker ps 2.f访问靶场 访问/console/login/LoginForm.jsp这个目录进行登录, 默认账号密码:weblogic/Oracle123 需要注意的是单个账号进行登录时&…

卷积神经网络-数据增强

文章目录 一、概述二、数据增强的类别1. 裁剪2.翻转和旋转3. 随机遮挡4. 图像变换5. 对transforms的选择操作,使数据增强更灵活 三、应用场景四、总结 一、概述 数据增强(也叫数据扩增)的目的是为了扩充数据和提升模型的泛化能力。有效的数据…

风力发电场集中监控解决方案

0引言 风力发电装机容量近年来快速增长。截至7月底,全国发电装机容量达27.4亿千瓦,同比增长11.5%。其中,太阳能和风力发电装机容量分别为4.9亿千瓦和3.9亿千瓦,同比增长42.9%和14.3%。风力发电场分陆上和海上风电,常位…

EasyFile-一整套Web大文件导出解决方案。轻松导出千万以上数据

文章目录 什么是EasyFile功能特性解决问题框架对比软件架构代码结构 时序图快速开始一、引入maven依赖二、Client端需要提供文件上传服务进行实现接口三、SpringBoot 启动入口处理四、额外处理五、异步文件处理器六、实现下载器七、Admin-管理界面八、easyfile-server 部署 什么…

美业SaaS收银系统如何收银?博弈美业实操/美业门店管理系统源码

1.打开博弈美业APP 2.工作台上方的【收银台】、【扫码核销】、【密码核销】均可完成收银 3.【收银台】可直接选择商品/服务/课程,再选择客户后提交订单收款 4.【扫码核销】【密码核销】可直接扫描二维码、输入核销码进行收银

模型结构-qwen原理

1. 背景 本文将以Qwen2系列大模型为基础,讲解Qwen2模型技术架构及模型原理。 2. 编码 词表的设计可以影响训练的效率和下游任务的表现。Qwen系列模型采用的是tiktoken分词器,这是一种快速分词方法,该方法被使用在OpenAI系列模型中,tiktoen的核心逻辑同样是基于BPE算法,…

YOLOv5-水印检测

简介: YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。虽然YOLOv5算法并没有与YOLOv4算法进行性能比较与分析,但是YOLOv5在COCO数据集上面的测试效果还是挺不错的。 YOLOv5是一种单阶段目标检测算法,该算…

内网私有化聊天软件:哪些企业类型最受益?

在数字化时代,企业内部通讯的效率和安全性成为了企业运营中不可或缺的一环。随着数据泄露事件频发和隐私保护意识的增强,越来越多的企业开始寻求更加安全、可控的通讯解决方案。内网部署的私有化聊天软件,以其高度的安全性、定制化特性和自主…

甩锅笔记:好好的服务端应用突然起不来,经定位是无法访问外网了?测试又说没改网络配置,该如何定位?

在工作中、团队协作时,可能遇到的问题,如集成测试等场景。但是作为偏前端的全栈,锅从天上来,不是你想甩就能甩,尤其面对测试等比较强势的团体(bug创造者),你必须有强大的心理承受能力…

C++ STL容器(二) —— list 底层剖析

计划写几篇关于C STL容器底层剖析的文章,主要基于的是MSVC的实现,本篇先从比较简单的 list 入手,个人感觉文章更偏于代码的具体实现,而不是原理的讲解,所以前置需要你了解链表的相关算法,如果有问题欢迎评论…

长方形+ 下三角形的图形 css

<div class"transform">42.48%</div>//转化.transform {position: relative;width: 70px;height: 26px;background-color: #dcdfe6; /* 长方形的颜色 */display: flex;justify-content: center;align-items: center;font-family: PingFangTC-Medium;font…

Keil5 操作

目录 1.Debug&#xff08;软件模拟调试&#xff1a;&#xff09;&#xff1a; 2.代码提示设置&#xff1a; 3.添加. c与.h文件&#xff1a; 常用技巧 安装下载推荐&#xff1a;正点原子 1.Debug&#xff08;软件模拟调试&#xff1a;&#xff09;&#xff1a; 文章讲解 …

Selenium自动化安装教程

目录 提示&#xff1a; 一、安装Python运行环境 1. 找到官方网站 ​编辑 2. 找到下载页面 3. 双击安装包 ​编辑 4. 运行 hello world 二、安装 pycharm 1. 找到官方网站 ​编辑 2. 找到下载页面 3. 双击安装包 4. 运行 hello world 5. 字体设置 三、Python管理…

JavaWeb--小白笔记07:servlet对表单数据的简单处理

这里的servlet对表单数据的处理是指使用IDEA创建web工程&#xff0c;再创建html和class文件进行连接&#xff0c;实现html创建一个表单网页&#xff0c;我们对网页中的表单进行填充&#xff0c;可以通过class文件得到网页我们填充的内容进行打印到控制台。 一登录系统页面---h…