如何在单击JFrame标题栏中的红十字时停止退出程序



我有一个简单的java GUI应用程序,在用户退出程序之前,它会提示用户一条消息,比如"你确定要退出吗?"。虽然这只在我使用"退出程序"JButton时有效,但当我使用JFrame标题栏中的红十字时,在消息对话框窗口中单击"是"或"否"都无关紧要。

对于这个任务,我在JFrame中添加了一个新的WindowListener,代码为

frame.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent evt) {
        int Answer = JOptionPane.showConfirmDialog(frame, "You want to quit?", "Quit", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
        if (answer == JOptionPane.YES_OPTION) {
            System.exit(0);
        }
    }
});

如果我单击"否",程序无论如何都会退出,我该如何停止该操作?

在我看来,你需要这行:

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

这意味着单击右上角的红色X时,框架不会闭合。但这也意味着您需要自己已经提供的现有实现。

编辑:在我看来,你的代码不起作用(我不能测试它,所以我不确定)。您需要windowClosing()方法。

frame.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
         int Answer = JOptionPane.showConfirmDialog(frame, "You want to quit?", "Quit", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
         if (answer == JOptionPane.YES_OPTION)
             exit(frame);
    }
}

最新更新