美文网首页
Java实现窗口退出确认框,确认框取消按钮问题

Java实现窗口退出确认框,确认框取消按钮问题

作者: 残渊_jsyjst | 来源:发表于2019-03-01 12:02 被阅读0次

在Java学习GUI时难免会遇到点击框架退出时需要弹出确认提示框的需求,废话不多说,直接上代码,下面是主程序,MenuFrame是继承JFame的类

public class Test_19 {
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            MenuFrame frame = new MenuFrame();
            //不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作
            frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
            frame.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    int result = JOptionPane.showConfirmDialog(null, "确认退出?", "确认", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);
                    if(result == JOptionPane.OK_OPTION){
                        System.exit(0);
                    }
                }
            });
            frame.setTitle("第二次作业");
            frame.setVisible(true);
        });
    }
}

代码是挺短的,逻辑也很简单,首先为frame添加了一个监听窗口事件的方法addWindowListener,然后使用了匿名内部类的方法,,将WindowAdapter的对象传给这个方法,然后在匿名类中重写了windowClosing的方法,接着在方法里面显示了确认的对话框,对确认按钮进行监听,并实现退出。

上面代码亲测有效,不过有些坑我觉得还是得提出来,有些人可能会碰到某些问题,能够弹出确认框,但点击取消按钮后还是退出了程序,其实程序并没有结束,只是被隐藏了起来,如何解决呢?

网上很多做法是直接删去下面这行代码:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

这句代码是默认会结束程序,但我尝试后并没有解决问题,后来看来某百度知道才终于解决了问题

JFrame的关闭不像Frame,点关闭按钮自己会关闭,但是那样做不好.可以用setDefaultCloseOperation(int operation);其中operation有以下几种:
DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作。
HIDE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册的 WindowListener 对象后自动隐藏该窗体。
DISPOSE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。
EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法退出应用程序。仅在应用程序中使用。
默认情况下,该值被设置为 HIDE_ON_CLOSE。更改此属性的值将导致激发属性更改事件,其属性名称为 "defaultCloseOperation"。

于是将setDefaultCloseOperation(int operation)的值更改为DO_NOTHING_ON_CLOSE后解决问题

frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

相关文章

  • Java实现窗口退出确认框,确认框取消按钮问题

    在Java学习GUI时难免会遇到点击框架退出时需要弹出确认提示框的需求,废话不多说,直接上代码,下面是主程序,Me...

  • 关于二次确认框文案的推敲

    确认框:您确认删除这条记录么? 取消 / 确认 确认框:您确认删除这条记录么? 取消 / 删除 ...

  • 自定义Dialog

    *确认取消弹框

  • JavaScript 认识2 三种弹框方式

    HTML 有三种基本弹框方式 alert:只有一个确认按钮confirm:俩个按钮,一个确认按钮,一个取消按钮pr...

  • android 对话框

    确认取消对话框 单选对话框 多选对话框

  • Swing对话框JOptionPane

    消息对话框 确认取消对话框 输入框对话框 选择对话框

  • 提示框

    确认框 确认框通常用于验证是否接受用户操作。当确认卡弹出时,用户可以点击 "确认" 或者 "取消" 来确定用户操作...

  • Semantic 弹窗提示

    两种类型 有“确认”和“取消”按钮的对话框弹窗,用来对用户的操作进行确认,如下图: 对应插件:ui-dialog;...

  • 编程练习

    制作新按钮,“新窗口打开网站” ,点击打开新窗口。 任务 1、新窗口打开时弹出确认框,是否打开 提示:使用 if ...

  • Selenium弹出框的处理 switch_to.alert 三

    三种警告框: 1、 alert(一个按钮) 2、 confirm(两个:确认,取消) 3、 prompt(两...

网友评论

      本文标题:Java实现窗口退出确认框,确认框取消按钮问题

      本文链接:https://www.haomeiwen.com/subject/mufduqtx.html