学习此内容前建议先去学习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相关推荐

  1. java swing(GUI图形化界面)基础教程2-添加组件

    书接上回,这是我们已经写好的代码: public static void main(String[] args) {//这是一个窗口类JFrame frame=new JFrame();//设置窗口位 ...

  2. java swing(GUI图形化界面)基础教程1

    开门见山,直接来吧! 1.窗口的出现 首先,我们想要窗口出现,需要知道窗口类是什么,即: public static void main(String[] args) {//这是一个窗口类JFrame ...

  3. 黑马程序员--线程之间的通信,等待与唤醒机制,线程的终止方式,线程中的其他方法,优先级,toString() 守护线程,GUI图形化界面

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  4. python图形用户界面pyside_PySide——Python图形化界面入门教程(一)

    标签: PySide--Python图形化界面入门教程(一) --基本部件和HelloWorld 原文链接:http://pythoncentral.io/intro-to-pysidepyqt-ba ...

  5. wxpython按钮形状如何修改_Python图形化界面入门教程 - 使用wxPython自定义表

    原标题:Python图形化界面入门教程 - 使用wxPython自定义表 来自: Linux迷 网址:https://www.linuxmi.com/python-gui-wxpython-zidin ...

  6. Win10安装Ubuntu子系统及图形化界面详细教程20210401

    Win10安装Ubuntu子系统及图形化界面详细教程 WSL(Windows Subsystem for Linux),顾名思义就是Windows中可以用Linux了,当然命令也会丰富更多,尤其是WS ...

  7. python图形化界面教程_python图形化界面开发教程

    python图形化界面开发教程内容摘要 python图形化界面开发教程白萝卜:泰兴电工教程,白了点,白兰地是在红葡萄酒的基础.基金从业资格教程学校,白开水.苜蓿干草.提摩西干草.兔粮方法:白居易< ...

  8. qpython3可视图形界面_PySide——Python图形化界面入门教程(三)

    PySide--Python图形化界面入门教程(三) --使用内建新号和槽 --Using Built-In Signals and Slots 上一个教程中,我们学习了如何创建和建立交互widget ...

  9. GUI图形化界面(后篇)

    Swing编程目录 1.1 Swing概述 1.2 Swing基本组件的用法 1.2.1 Swing组件层次 1.2.2 AWT组件的Swing的实现 1.2.3 为组件设置边框 1.2.4 使用JT ...

最新文章

  1. Pycharm中tensorflow框架下tqdm的安装
  2. python遍历指定文件夹的所有文件_python 统计指定文件夹下所有的文件数量,BFS方式...
  3. Document类型知识大全
  4. 福音!微信个人公众号可以改名了!
  5. JBox2D For Android - hello box2d
  6. 为何电脑html无法删除,电脑文件无法删除该怎么办?几种解决方法介绍
  7. 某大型银行深化系统技术方案之六:系统架构之运作流程
  8. 传统存储方式_相机传到手机的3种方式,没WiFi的相机也能用
  9. linux 中rpc 服务器,实现Linux环境下编程RPC通信之个人经验总结(转)
  10. SQL Server 2005全文检索技术
  11. linux 异步信号的同步处理方式
  12. 嵌入式Linux内存使用与性能优化
  13. webstorm 配置webserver选项,让其他ip设备可访问(如手机等测试效果) ...
  14. 一篇报告了解国内首个针对加密流量的检测引擎
  15. 使用ZUNE从marketplace安装wp7 app的方法
  16. 手写在线计算机,在线手写
  17. python中xlsxwriter_python模块之XlsxWriter 详解
  18. Linux中常用的scree的安装和常用的screen命令
  19. TPshop电商平台购物车自动化测试
  20. MongoDB的安装与可视化工具Studio 3T的安装

热门文章

  1. 截至2022年1月12日,Android Gradle 插件版本对照说明
  2. 苹果cmsV10魔改短视多功能主题5.2版本
  3. 【Dest0g3 520迎新赛】密码学部分Wp及LCG(线性同余生成器)攻击方法
  4. BIOS设置光盘启动(上.Award bios)
  5. 2021年5月22日 星期六 霾 高温
  6. 解决idea ctrl alt + T 打开Surround With里面却没有逻辑语句模板问题
  7. L2-040 哲哲打游戏 (25 分)(模拟)
  8. java实现请求排队处理_【高并发】秒杀系统高并发请求排队处理
  9. java动态性,java动态性
  10. 反复流产胎停,也许是被抗磷脂综合征坑了!