【问题标题】:Java: JFrame on exit actions closes anyway even if "No" is clickedJava:即使单击“否”,退出操作上的 JFrame 仍会关闭
【发布时间】:2014-07-23 08:38:30
【问题描述】:

您知道为什么即使我单击“否”按钮,我的 JFrame 还是会关闭吗?这是我的代码:

jframe.addWindowListener(new java.awt.event.WindowAdapter() {
        @Override
        public void windowClosing(java.awt.event.WindowEvent windowEvent) {
            int confirm = JOptionPane.showOptionDialog(jframe,
                    "Sei sicuro di voler chiudere EconomatoUTL?",
                    "Attenzione!", JOptionPane.YES_NO_OPTION,
                    JOptionPane.QUESTION_MESSAGE, null, null, null);

            if (confirm == JOptionPane.YES_OPTION) {

                Runtime runtime = Runtime.getRuntime();
                try {
                    runtime.exec("cmd /C basexserver.bat stop");
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.exit(1);
            }
        }
    });

我在几个论坛上找到了它,他们说它有效...... 哪里错了?

【问题讨论】:

    标签: java swing jframe joptionpane windowlistener


    【解决方案1】:

    检查您是否设置了默认关闭操作,例如,

    jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    

    即使您没有,您的框架也会在单击“否”选项时隐藏(默认关闭操作为 HIDE_ON_CLOSE)。

    改为将其添加为默认关闭操作。

    jframe.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    

    如果用户选择“否”选项,这将使您的框架保持现有状态。

    【讨论】:

      【解决方案2】:

      您已经参加了windowClosing 活动,该活动并未取消。所以窗口将被关闭。

      已经有一段时间了,但您可以使用windowEvent 取消活动。

      【讨论】:

      • 不清楚你的意思...... jframe 应该只在 confirm=JOptionPane.YES_OPTION 时关闭......为什么会发生这种情况?哪种方法正确?
      • 对,它是JFrame.setDefaultCloseOperation(),而不是使用WindowEvent。似乎时间太长了;)
      猜你喜欢
      • 2022-01-18
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多