当前位置: 首页 > news >正文

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.lryc.cn/news/444515.html

相关文章:

  • STM32篇:开发环境安装
  • AIGC实战——多模态模型Flamingo
  • 如何在WordPress中添加事件Schema(分步指南)
  • 守护企业资产安全:企业微信群禁止互加好友操作指南!
  • 【QT基础】创建项目项目代码解释
  • 【数据结构】对象的比较
  • 代码随想录八股训练营第四十天| C++
  • 【C++】10道经典面试题带你玩转二叉树
  • 【裸机装机系列】13.kali(ubuntu)-优化-自定义grub启动界面个性化背景
  • 数组高阶应用(C++版)
  • Spring(四)多线程+异步任务执行服务+常见的Enable注解+SpringUnit测试
  • 解析与实现二叉树
  • Java面向对象——内部类(成员内部类、静态内部类、局部内部类、匿名内部类,完整详解附有代码+案例)
  • 操作系统笔记三
  • uniapp快速入门教程,内容来源于官方文档,仅仅记录快速入门需要了解到的知识点
  • 基于微信小程序的商品展示+ssm(lw+演示+源码+运行)
  • 【Linux】常用指令(下)(内含more、less、 head、tail、date、find、grep、zip、tar以及学习笔记)
  • DesignMode__unity__抽象工厂模式在unity中的应用、用单例模式进行资源加载
  • Leetcode3289. 数字小镇中的捣蛋鬼
  • 13_Python的高阶函数
  • 清空当前机器所有Docker容器和镜像
  • FreeRTOS学习——Systick中断、SVC中断、PendSV中断
  • 汇量科技大数据面试题及参考答案
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.AVL树
  • Python 的数据类型与操作
  • Python燃烧废气排放推断算法模型
  • Qt中多语言的操作(以QtCreator为例)
  • 计算机毕业设计 社区医疗服务系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • html+css学习
  • 2.gitlab ce 细粒度的权限控制