JavaGUI(但期末速成版)之事件监听和处理

点击返回标题->JavaGUI期末速成版-CSDN博客


前言

依旧先声明,本篇记录的JavaGUI编程都是十分精简的,内容只取常用的、套路的、应付期末考试的。


我先放两张ppt的原内容。。。 

看完(我觉得你可能都没看完),摊牌了,我也没看完。。。好复杂,看不懂/(ㄒoㄒ)/~~

无所谓,只要会用就行了,而且出于应对期末考的目的,本篇只研究按下按钮的事件监听和处理。

套路模板一

①写一个自定义类my_listener,实现ActionListener这个接口,并重写其中的actionPerformed方法(这个方法就固定接收一个ActionEvent类好了,记不住没关系,编译器都能自动生成!),比如这样:

class my_listener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("按钮被点击了呃!");}
}

②创建容器和按钮组件,对按钮添加自定义监听类对象(通常这里会用匿名对象的写法,因为一个按钮对应一个事件,只用一次),最后把按钮塞到容器中。

创建容器和按钮组件,对按钮添加自定义监听类对象,最后把按钮塞到容器中。
JPanel pane = new JPanel();
JButton button = new JButton("这是一个按钮");
button.addActionListener(new my_listener());
pane.add(button);

③处理一下其它窗口、容器的细节,该显示的显示,该设置大小的设置大小,等等等。。。

完整模板代码如下:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;class my_listener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("按钮被点击了呃!");}
}public class Main {public static void createGUI() {JFrame fr = new JFrame("这是主窗口");//通常直接在有参构造的时候命名,省得后续用setTitle()方法命名了。fr.setSize(400, 250);//设置窗体宽高fr.setLocation(400, 300);//设置窗体坐标//下面这行代码的作用和上面两行被注释的代码的作用一模一样,不信你试试~//fr.setBounds(400, 300, 400, 250);fr.setVisible(true);//设置窗体可见,基本必写吧?fr.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗体关闭按钮响应事件为关闭此窗口。//创建容器和按钮组件,对按钮添加自定义监听类对象,最后把按钮塞到容器中。JPanel pane = new JPanel();JButton button = new JButton("这是一个按钮");button.addActionListener(new my_listener());pane.add(button);//把容器放在窗口中fr.add(pane);}public static void main(String[] args) {createGUI();}
}


套路模板二 

套路二和套路一的main方法中的代码几乎一样,唯一的区别在于套路一走的思路是自定义子类实现接口ActionListener,然后用自定义子类去创建对象。

而套路二,我们直接利用匿名内部类(如果忘了见本篇Java内部类-CSDN博客的标题二的子标题④学习)的思路去创建ActionListener的实例化化对象,具体代码如下:

button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("按钮被点击了呃~");}
});

完整模板代码如下:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class Main {public static void createGUI() {JFrame fr = new JFrame("这是主窗口");//通常直接在有参构造的时候命名,省得后续用setTitle()方法命名了。fr.setSize(400, 250);//设置窗体宽高fr.setLocation(400, 300);//设置窗体坐标//下面这行代码的作用和上面两行被注释的代码的作用一模一样,不信你试试~//fr.setBounds(400, 300, 400, 250);fr.setVisible(true);//设置窗体可见,基本必写吧?fr.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗体关闭按钮响应事件为关闭此窗口。//创建容器和按钮组件,对按钮添加自定义监听类对象,最后把按钮塞到容器中。JPanel pane = new JPanel();JButton button = new JButton("这是一个按钮");button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("按钮被点击了呃~");}});pane.add(button);//把容器放在窗口中fr.add(pane);}public static void main(String[] args) {createGUI();}
}

效果和模板一没区别,就不展示了。 


学会上面两个套路后,根据题目要求,修改对应的响应事件即可。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

赴日IT培训课程 程序员新思路!

先说好,跟国内相比,日本IT并不发达。日本IT是依托着日本传统强势的制造业和政府机关发展的,所以开发的大多数软件也是面向这些的,由于日本人的严谨态度,各种文档的编写层出不穷,不像国内程序员每天没日没夜…

android 新版studio gradle 里面没有offline 勾选项

studio 右边 gradle 上面有个图标可以点击切换

【深度学习】注意力机制(七)Agent Attention

本文介绍Agent Attention注意力机制,Transformer中的Attention模块可以提取全局语义信息,但是计算量太大,Agent Attention是一种计算非常有效的Attention模块。 论文:Agent Attention: On the Integration of Softmax and Linear…

前端手动部署与自动化部署

连接服务器 先购买服务器 安装vscode插件 连接服务器 连接成功 手动部署 安装nginx 启动nginx systemctl start nginx systemctl status nginx systemctl enable nginx启动 检查状态 开机就启动nginx 开始手动部署 配置nginx 成功

走过的2023:在挑战中领悟,在仿徨中成长

转眼间就到了2023年的最后一个月,回顾这短暂而又有意义的一年,可以用12个字总结:在挑战中领悟,在仿徨中成长。这篇文章我会从技术成长、职场生活、读书感悟和个人生活等几个方面,总结一下过去的这一年,梳理…

【玩转TableAgent数据智能分析】——个人体验分享

文章目录 前言上手体验优势不足 再次体验第三次体验第四次体验1、找到高价房源和低价房源的特点,看清民宿行业的整体布局2、了解各个地域的整体价格,优选潜力城市3、对比各个城市的评分,深入了解不同城市的民宿市场特点4、对比不同床型价格&a…

Java AQS 阻塞式锁和相关同步器工具的框架

8 J.U.C Java 并发工具包 AQS 原理 AQS:AbstractQueuedSynchronizer(抽象队列同步器),阻塞式锁和相关同步器工具的框架 特点: 用 state 属性来表示资源的状态(分独占模式和共享模式)&#…

TCP/IP 传输层协议

传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据包协议UDP(User Datagram Protocol)。 TCP协议 TCP是一种面向连接的传输层协议&#…

esp32-s3解决使用蓝牙ble一键配网时,蓝牙ble内存使用的内部空间,空间不足时可采用外部PSRAM

idf.py menuconfig进入到esp32配置界面,配置NimBLE使用外部PSRAM内存即可

pip 离线安装:利用pypi网站进行模块 库的离线安装

离线安装是一种很好的方法,在网络不佳、库版本不明确、复杂库本地编译安装报错时,通过whl文件的下载安装,可以很高效的解决问题。 pypi的网站:https://pypi.org/ 这个网站包含各种你 pip install xxx 的库,离线安装可…

我做了一个在手机灵动岛锁屏看实时网速/步数/下班倒计时/跑步距离/照片/待办/倒计时/手机使用次数/帧率...的软件

我做了一个在手机灵动岛&锁屏看实时网速/步数/下班倒计时/跑步距离/照片/待办/倒计时/手机使用次数/帧率…的软件 Island Widgets 的作用: 提醒您 : 准时下班每天运动陪伴家人保持体重放下手机每日待办当前网速手机使用强度实时热搜现在天气… 初…

Python库学习(十三):爬虫框架Scrapy

微信搜索【猿码记】查看更多文章... 1.介绍 Scrapy是一个用于爬取网站数据的Python框架。它提供了一套强大而灵活的工具,使开发者能够轻松地创建和管理爬虫,从而从网站中提取所需的信息。框架要求Python的版本 3.8 Github Star:49.6k: https://github.c…

【Linux】Linux线程概念和线程控制

文章目录 一、Linux线程概念1.什么是线程2.线程的优缺点3.线程异常4.线程用途5.Linux进程VS线程 二、线程控制1.线程创建2.线程终止3.线程等待4.线程分离 一、Linux线程概念 1.什么是线程 线程是进程内的一个执行流。 我们知道,一个进程会有对应的PCB,…

GEE-Sentinel-2月度时间序列数据合成并导出

系列文章目录 第一章:时间序列数据合成 文章目录 系列文章目录前言时间序列数据合成总结 前言 利用每个月可获取植被指数数据取均值,合成月度平均植被指数,然后将12个月中的数据合成一个12波段的时间数据合成数据。 时间序列数据合成 代码…

ROS2 学习09--ros 中的通信接口的定义以及如何创建自定义msg、srv和action文件

在ROS系统中,无论话题还是服务,或者我们后续将要学习的动作,都会用到一个重要的概念——通信接口。 通信并不是一个人自言自语,而是两个甚至更多个人,你来我往的交流,交流的内容是什么呢?为了让…

数值分析(只为应付考试)

概述 研一时为应付高等工程数学考试整理的有关数值分析部分的内容,目的是为了应付考试。 误差 误差限与有效数字的联系 对于有 n n n 位有效数字的 x x x 的近似值 x ∗ x^* x∗, 其科学计数法表示形式 x ∗ a 1 . a 2 . . . a n 1 0 m ( a 1 ≠ 0 ) x^* …

Python开发GUI常用库PyQt6和PySide6介绍之二:设计师(Designer)

Python开发GUI常用库PyQt6和PySide6介绍之二:设计师(Designer) PySide6和PyQt6都有自己的设计师(Designer),用于可视化地设计和布局GUI应用程序的界面。这些设计师提供了丰富的工具和功能,使开…

文件名生成excel清单,怎么操作?这里有简单办法

文件名生成excel清单,怎么操作?为了整理文件名称,有时候需要将所有的文件名称整理好并且生成excel清单,大家可能还不能理解是什么意思,其实就是将所有文件的名称整理到excel表格里,形成一个清单。这个操作很…

【ECharts】雷达图

let chart echarts.init(this.$refs.radar_chart); let option {title: {text: 关键过程指标,},grid: {left: 0,},legend: {data: [个人, 小组, 团队],bottom: 0,itemWidth: 6,itemHeight: 6,},radar: {// shape: circle,indicator: [{ name: 成交额, max: 30000 },{ name: 成…

yum install net-tools 命令报错,无法安装成功

编辑网卡文件 插入数据,输入: i 保存编辑:输入 Esc 然后:wq