Java GUI事件处理及添加对话框实现方式

 更新时间:2026年02月04日 09:45:31   作者:小俱的一步步  
文章介绍了Java中事件处理的基本概念和实现方法,包括事件源、事件对象、监听器以及不同类型的事件处理,如按钮点击、鼠标、键盘和窗口事件,还提供了使用JOptionPane进行对话框操作的示例

事件处理

在窗口添加好面板和组件之后,但只是一个界面,不能执行其中的功能,需要添加事件处理来实现相应的功能。用户与GUI组件进行交互就会发生事件,如:按下一个按钮、用键盘输入一个字符、点击鼠标等。

Java中,事件处理的基本思路:

  • 一个源(事件源)产生一个事件(事件对象)并把它送到监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接受,监听器将处理这些事件;
  • 一个事件源必须注册监听器以便监听器可以接受关于一个特定事件的通知。

1.按钮点击事件

例如向按钮1添加点击事件:

jButton1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("点击登录");
            }
        });

2.鼠标事件

向按钮2添加鼠标事件:

jButton2.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("鼠标点击");
            }

            @Override
            public void mousePressed(MouseEvent e) {
                System.out.println("鼠标按下,但没有松开");
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                System.out.println("鼠标松开");
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                System.out.println("鼠标悬停");
            }

            @Override
            public void mouseExited(MouseEvent e) {
                System.out.println("鼠标移走");
            }
        });

3.键盘事件

例如向文本域添加键盘事件

jTextField.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {
//                System.out.println("键盘输入完成");
            }

            @Override
            public void keyPressed(KeyEvent e) {
//                System.out.println("键盘按下");
            }

            @Override
            public void keyReleased(KeyEvent e) {
//                "释放键盘"
                System.out.println(jTextField.getText());
            }
        });

4.添加窗口事件

例如向当前窗口添加窗口事件:

this.addWindowListener(new WindowAdapter() {//窗口适配器WindowAdapter,也可使用new WindowListener()
            @Override
            public void windowClosing(WindowEvent e) {
                int res = JOptionPane.showConfirmDialog(null,"确定退出聊天室?","操作提示",JOptionPane.OK_CANCEL_OPTION);//弹出一个对话框
                if (res == 0){//确认退出
                    dispose();
                }
            }
        });

对话框

JOptionPane对话框

1.showMessageDialog():消息对话框

  • 五种消息类型,图标不同:
ERROR_MESSAGE 错误消息提示
INFORMATION_MESSAGE 信息提示
WARNING_MESSAGE        警告提示
QUESTION_MESSAGE  问题提示
PLAIN_MESSAGE        简洁提示
  • 例如:
JOptionPane.showMessageDialog(null, "发送内容不能为空");
  • 图示:

 

2.showConfirmDialog():确认对话框

主要有四种消息类型图标不同:

DEFAULT_OPTION       默认选项
YES_NO_OPTION 是/否选项
YES_NO_CANCEL_OPTION是/否/取消选项
OK_CANCEL_OPTION确定/取消
  • 例如:
JOptionPane.showConfirmDialog(null,"确定退出聊天室?","操作提示",JOptionPane.OK_CANCEL_OPTION);
  • 图示: 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java Thread之Sleep()案例详解

    Java Thread之Sleep()案例详解

    这篇文章主要介绍了Java Thread之Sleep()案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Java中你真的会用Constructor构造器吗之看完本篇你就真的会了

    Java中你真的会用Constructor构造器吗之看完本篇你就真的会了

    显式初始化要求我们在写程序时就确定初始值,这有时很不方便。我们可以使用构造器(constructor)来初始化对象。构造器可以初始化数据成员,还可以规定特定的操作。这些操作会在创建对象时自动执行。下面文字将对该内容做详细介绍,需要的小伙伴请参考
    2021-09-09
  • springboot2.0+elasticsearch5.5+rabbitmq搭建搜索服务的坑

    springboot2.0+elasticsearch5.5+rabbitmq搭建搜索服务的坑

    这篇文章主要介绍了springboot2.0+elasticsearch5.5+rabbitmq搭建搜索服务的坑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 使用Java反射机制提高SpringBoot的代码质量和可维护性

    使用Java反射机制提高SpringBoot的代码质量和可维护性

    保持好的代码质量和遵守编码标准是开发可维护和健壮软件的重要方面,在本文中,我们将探讨如何使用 Java 反射来提高 Spring Boot 应用程序的代码质量和可维护性,需要的朋友可以参考下
    2023-10-10
  • 分享我的第一次java Selenium自动化测试框架开发过程

    分享我的第一次java Selenium自动化测试框架开发过程

    这篇文章主要介绍了分享我的第一次java Selenium自动化测试框架开发过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 启动Tomcat报错Unsupported major.minor version xxx的解决方法

    启动Tomcat报错Unsupported major.minor version xxx的解决方法

    这篇文章主要为大家详细介绍了启动Tomcat报错Unsupported major.minor version xxx的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • MyBatis通用Mapper中的通用example(排序)详解

    MyBatis通用Mapper中的通用example(排序)详解

    这篇文章主要介绍了MyBatis通用Mapper中的通用example(排序)详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Springboot启动原理详细讲解

    Springboot启动原理详细讲解

    这篇文章主要介绍了SpringBoot启动原理的分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 三道java新手入门面试题,通往自由的道路--JVM

    三道java新手入门面试题,通往自由的道路--JVM

    这篇文章主要为大家分享了最有价值的3道JVM面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,对hashCode方法的设计、垃圾收集的堆和代进行剖析,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • java实现图片分割指定大小

    java实现图片分割指定大小

    这篇文章主要为大家详细介绍了java实现图片分割指定大小,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09

最新评论