【问题标题】:Swing - Closing a Frame (Window) or not depending on popup choiceSwing - 关闭框架(窗口)或不取决于弹出选择
【发布时间】:2016-12-27 10:15:51
【问题描述】:

我正在尝试,当用户尝试以正常方式关闭窗口(单击 X)时,会出现一个弹出窗口,显示“您确定要关闭此窗口吗?”然后如果他选择“否”,我希望窗口不要关闭,无论他选择是还是否,它都会关闭。

我当前的监听器代码是:

frmContactarEspecialista.addWindowListener(new FrameWindowListener());    

private class FrameWindowListener extends WindowAdapter {
        @Override
        public void windowClosing(WindowEvent arg0) {
            int salir = JOptionPane.showOptionDialog(frmContactarEspecialista, "Si cierra esta ventana se descartará el email, ¿continuar?", "Salir",
                    JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);

            if (salir != 0){

            }
        }
    }

将我的帖子标记为重复后,我已经尝试过:

private class FrameWindowListener extends WindowAdapter {
        @Override
        public void windowClosing(WindowEvent arg0) {
            int salir = JOptionPane.showConfirmDialog(frmContactarEspecialista, "Si cierra esta ventana se descartará el email, ¿continuar?", "Salir",
                    JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

            if (salir == JOptionPane.NO_OPTION) {
                System.out.println("do nothing");
            }
        }
    }

它会打印"do nothing",但仍会关闭窗口。

我应该更改或放入if 以使其不会关闭窗口?

谢谢

【问题讨论】:

  • 嗨@IginoBoffa,我试过了,它一直在关闭,另外我想知道在 dispose() 方法中放什么
  • 首先你应该设置你的框架像 jFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  • 好的,@newuserua_ext 选择“是”时我必须在 if now 中添加什么?
  • 如果是,你应该调用 dispose();或 System.exit(0) 方法。

标签: java swing


【解决方案1】:

我找到了答案! 首先你必须在你的框架中添加一些东西。

nameofyourframe.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

因此,当您按 X 时,窗口根本不会关闭。 现在让我们去找你的听众。

if(salir != 0){
    nameofyourframe.dispose();
}

所以,如果答案是肯定的,它会关闭你的程序和窗口,如果没有,什么都不会发生!

【讨论】:

  • 你好,谢谢,但我不想关闭整个程序,只想关闭我所在的窗口
猜你喜欢
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 2017-11-01
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
相关资源
最近更新 更多