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

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

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


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

相关文章:

  • 【动画图解】一次理清九大排序算法!面试官问到再也不慌!
  • Centos7在安装Graylog时新安装MongoDB报错端口不监听服务不启动无法运行启动失败
  • el-table 实现行拖拽排序
  • 【C++多线程编程】(五)之 线程生命周期管理join() 与 detach()
  • 【Proteus仿真】【Arduino单片机】蓝牙遥控小车
  • 边缘计算有哪些常用场景?TSINGSEE边缘AI视频分析技术行业解决方案
  • R语言【cli】——cli_warn可以更便捷的在控制台输出警告信息
  • 【计算机网络】八股文 | 第四章
  • C#合并多个Word文档(微软官方免费openxml接口)
  • 代码随想录第三十八天(一刷C语言)|零钱兑换II组合总数和 IV
  • Java中使用JTS实现WKB数据写入、转换字符串、读取
  • 机器学习算法(12) — 集成技术(Boosting — Xgboost 分类)
  • 用友U8+CRM help2 任意文件读取漏洞复现
  • Flink系列之:Savepoints
  • 前端面试题(计算机网络):options请求方法及使用场景
  • .pyc 想到的一些问题
  • codis proxy处理流程
  • exif信息对照
  • Java程序员幽默爆笑锦集
  • Linux后台研发超实用命令总结
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • ucore操作系统实验笔记 - 重新理解中断
  • 百度小程序遇到的问题
  • 从重复到重用
  • 第十八天-企业应用架构模式-基本模式
  • 番外篇1:在Windows环境下安装JDK
  • 关于Flux,Vuex,Redux的思考
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 力扣(LeetCode)965
  • 数据结构java版之冒泡排序及优化
  • 用 Swift 编写面向协议的视图
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ![CDATA[ ]] 是什么东东
  • #《AI中文版》V3 第 1 章 概述
  • (2020)Java后端开发----(面试题和笔试题)
  • (Ruby)Ubuntu12.04安装Rails环境
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二开)Flink 修改源码拓展 SQL 语法
  • (三)Honghu Cloud云架构一定时调度平台
  • (十一)图像的罗伯特梯度锐化
  • (循环依赖问题)学习spring的第九天
  • (一)Thymeleaf用法——Thymeleaf简介
  • (一)UDP基本编程步骤
  • (一)基于IDEA的JAVA基础12
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)甲方乙方——赵民谈找工作
  • (转)母版页和相对路径
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .htaccess配置重写url引擎
  • .net core 6 集成和使用 mongodb
  • .net 程序发生了一个不可捕获的异常
  • .NET 的静态构造函数是否线程安全?答案是肯定的!