java swing(GUI图形化界面)基础教程3-添加事件监听1
学习此内容前建议先去学习java基础知识: 匿名内部类 (学的多的可以用lambda表达式,更加简便)
好, 我们先看一下之前的代码(即一个窗口和一个按钮)
如果想看详细内容,链接为: (23条消息) java swing(GUI图形化界面)基础教程2-添加组件_尽辰的博客-CSDN博客_java窗口添加组件
public static void main(String[] args) {JFrame frame=new JFrame();//这是一个窗口类frame.setBounds(100,100,500,500);//设置窗口位置与大小frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用户关闭时会关闭所有窗口JPanel panel=new JPanel();//创建一个面板,并且将这个面板添加到窗口里面去frame.add(panel);panel.setLayout(null);//取消默认的布局管理JButton button=new JButton();//创建一个按钮,并且将这个按钮添加到面板上面button.setText("按钮");//设置按钮的文字内容button.setBounds(100,100,100,100);//设置按钮的位置大小panel.add(button);//添加按钮到面板frame.setVisible(true);//设置这窗口可见,记得尽量要把这一句放在最后面}
现在问题是,虽然我们会创建一个窗口,并且可以给这个窗口添加一个按钮,但是这个按钮按了没有反应,没有发生任何事件,这并不是我们想要的,因此我们需要给这个按钮添加事件监听.
添加事件监听,英文单词分别为 add ,Action, Listener
所以代码为
button.addActionListener();
当然,括号内需要内容,将鼠标移动到方法上面,查看它需要什么
我们尝试new 一下
明显第一个就是我们要的,它是一个接口,我们直接按Tab键生成(涉及匿名内部类,需要自己去学习)
button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {}});
此处 actionPerformed方法大括号内就可以填: 点击这个按钮要发生的事件,例如下面这个代码
他的意思就是: 点击一下按钮,就输出一句 666
button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println(666);}});
现在我们已经初步完成,我们来看一下目前的全部代码:
public static void main(String[] args) {JFrame frame=new JFrame();//这是一个窗口类frame.setBounds(100,100,500,500);//设置窗口位置与大小frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用户关闭时会关闭所有窗口JPanel panel=new JPanel();//创建一个面板,并且将这个面板添加到窗口里面去frame.add(panel);panel.setLayout(null);//取消默认的布局管理JButton button=new JButton();//创建一个按钮,并且将这个按钮添加到面板上面button.setText("按钮");//设置按钮的文字内容button.setBounds(100,100,100,100);//设置按钮的位置大小panel.add(button);//添加按钮到面板//TODO ============== 上面是之前的代码 ===========================button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println(666);}});frame.setVisible(true);//设置这窗口可见,记得尽量要把这一句放在最后面}
然后直接运行,我们点击一下按钮,发现控制台就输出了 666
不过吧,我们这个效果是在控制台上面,但是我们更希望效果出现在窗口上面,
就例如我把它改为下面这一段代码:
button.addActionListener(new ActionListener() {int buttonNumber=1;@Overridepublic void actionPerformed(ActionEvent e) {button.setText("你点了"+buttonNumber+"下");buttonNumber++;}});
这个可以自己运行一下看一下效果(其实直接读代码也很好理解)
现在你已经有了独自设置监听的能力了
你也可以凭自己的想象来写,例如点击之后改变窗口位置大小,点击之后跳出另一个窗口....
注意事项:
这里要说明一个问题: 就是我此处的 int buttonNumber=1; 是定义在 button.addActionListener(new ActionListener() { });内部,
但是,很多时候我们的变量是定义在外面的(因为可能需要被其他地方调用,而写在里面就不好调用到),如
结果它错误提示: buttonNumber 要为final ,这里也不细究为什么,我直接给出解决措施:
1. 多定义一个变量,然后赋值
int bn=1;button.addActionListener(new ActionListener() {int buttonNumber=bn;@Overridepublic void actionPerformed(ActionEvent e) {button.setText("你点了"+buttonNumber+"下");buttonNumber++;}});
2. 将它变成静态的(类属性)
文章结束,若发现错误可直接指出
java swing(GUI图形化界面)基础教程3-添加事件监听1相关推荐
- java swing(GUI图形化界面)基础教程2-添加组件
书接上回,这是我们已经写好的代码: public static void main(String[] args) {//这是一个窗口类JFrame frame=new JFrame();//设置窗口位 ...
- java swing(GUI图形化界面)基础教程1
开门见山,直接来吧! 1.窗口的出现 首先,我们想要窗口出现,需要知道窗口类是什么,即: public static void main(String[] args) {//这是一个窗口类JFrame ...
- 黑马程序员--线程之间的通信,等待与唤醒机制,线程的终止方式,线程中的其他方法,优先级,toString() 守护线程,GUI图形化界面
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...
- python图形用户界面pyside_PySide——Python图形化界面入门教程(一)
标签: PySide--Python图形化界面入门教程(一) --基本部件和HelloWorld 原文链接:http://pythoncentral.io/intro-to-pysidepyqt-ba ...
- wxpython按钮形状如何修改_Python图形化界面入门教程 - 使用wxPython自定义表
原标题:Python图形化界面入门教程 - 使用wxPython自定义表 来自: Linux迷 网址:https://www.linuxmi.com/python-gui-wxpython-zidin ...
- Win10安装Ubuntu子系统及图形化界面详细教程20210401
Win10安装Ubuntu子系统及图形化界面详细教程 WSL(Windows Subsystem for Linux),顾名思义就是Windows中可以用Linux了,当然命令也会丰富更多,尤其是WS ...
- python图形化界面教程_python图形化界面开发教程
python图形化界面开发教程内容摘要 python图形化界面开发教程白萝卜:泰兴电工教程,白了点,白兰地是在红葡萄酒的基础.基金从业资格教程学校,白开水.苜蓿干草.提摩西干草.兔粮方法:白居易< ...
- qpython3可视图形界面_PySide——Python图形化界面入门教程(三)
PySide--Python图形化界面入门教程(三) --使用内建新号和槽 --Using Built-In Signals and Slots 上一个教程中,我们学习了如何创建和建立交互widget ...
- GUI图形化界面(后篇)
Swing编程目录 1.1 Swing概述 1.2 Swing基本组件的用法 1.2.1 Swing组件层次 1.2.2 AWT组件的Swing的实现 1.2.3 为组件设置边框 1.2.4 使用JT ...
最新文章
- Pycharm中tensorflow框架下tqdm的安装
- python遍历指定文件夹的所有文件_python 统计指定文件夹下所有的文件数量,BFS方式...
- Document类型知识大全
- 福音!微信个人公众号可以改名了!
- JBox2D For Android - hello box2d
- 为何电脑html无法删除,电脑文件无法删除该怎么办?几种解决方法介绍
- 某大型银行深化系统技术方案之六:系统架构之运作流程
- 传统存储方式_相机传到手机的3种方式,没WiFi的相机也能用
- linux 中rpc 服务器,实现Linux环境下编程RPC通信之个人经验总结(转)
- SQL Server 2005全文检索技术
- linux 异步信号的同步处理方式
- 嵌入式Linux内存使用与性能优化
- webstorm 配置webserver选项,让其他ip设备可访问(如手机等测试效果) ...
- 一篇报告了解国内首个针对加密流量的检测引擎
- 使用ZUNE从marketplace安装wp7 app的方法
- 手写在线计算机,在线手写
- python中xlsxwriter_python模块之XlsxWriter 详解
- Linux中常用的scree的安装和常用的screen命令
- TPshop电商平台购物车自动化测试
- MongoDB的安装与可视化工具Studio 3T的安装
热门文章
- 截至2022年1月12日,Android Gradle 插件版本对照说明
- 苹果cmsV10魔改短视多功能主题5.2版本
- 【Dest0g3 520迎新赛】密码学部分Wp及LCG(线性同余生成器)攻击方法
- BIOS设置光盘启动(上.Award bios)
- 2021年5月22日 星期六 霾 高温
- 解决idea ctrl alt + T 打开Surround With里面却没有逻辑语句模板问题
- L2-040 哲哲打游戏 (25 分)(模拟)
- java实现请求排队处理_【高并发】秒杀系统高并发请求排队处理
- java动态性,java动态性
- 反复流产胎停,也许是被抗磷脂综合征坑了!