java - 使 JOptionPane 消失

标签 java swing

public void windowClosing (WindowEvent e)
    {
        JFrame frame = new JFrame();

        int confirm = JOptionPane.showConfirmDialog (frame, "Exit game?", "Are you sure?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
        if (confirm == JOptionPane.YES_OPTION)
        {
            dispose ();
        }
        else
        {
            frame.setVisible(false);
        }
    }

因此,当用户单击关闭按钮时,会弹出一个 JOptionPane。当用户单击“否”时,JOptionpane 应该消失,然后返回到它最初显示的框架,但使用我的代码,即使我单击“否”,两个框架(JOptionPane 的框架和它所在的框架)开启,消失。

有一件事:

  • 我知道我不应该为 JOptionPane 创建新的 JFrame,但我尝试使用 this 作为组件,例如: JOptionPane.showConfirmDialog (this, "...",. ..) 当用户单击“否”时,JOptionPane 是唯一应该消失的东西(所以我将其设置为:this.setVisible(false);)但是当我使用 this 即使主框架消失,所以我只想创建一个新框架来满足我的需求。我也无法将其设置为 null,因为我需要它出现在屏幕中央。如果有人可以建议我如何处理这个问题,请告诉我。

最佳答案

这真的很简单,你的框架消失了,因为你说它不应该是可见的,只需删除其他的:

public void windowClosing (WindowEvent e) {         
   int confirm = JOptionPane.showConfirmDialog (this, "Exit game?", "Are you sure?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

   if (confirm == JOptionPane.YES_OPTION) {
      dispose();
   }
}

编辑:

同时将 setDefaultCloseOperation (EXIT_ON_CLOSE); 替换为 setDefaultCloseOperation (DO_NOTHING_ON_CLOSE);,否则无论 windowClosing 方法中发生什么情况,主框架都会关闭。

关于java - 使 JOptionPane 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21729529/

相关文章:

java - DB2 中的 DAYS 和 DATE 子句

java - 如何返回所有内容,同时将其添加为字符串

java - Netbeans MVC Swing JTable ResultSet 数据插入

java - 将 JScrollPane 添加到 JFrame/JPanel

java - Text.IO.ReadAll 的示例代码

java - 如果成员变量关闭,如何在不将类型从 void 更改为 boolean 的情况下显示 true?

java - 扩展 JFrame(空窗口错误)

java - 为什么除非我提取文件,否则我的 Jar 不会运行?

java - 如何在Java中向一个JFrame添加2个或更多对象?

java - 使用spring初始化java枚举中的字段