java - 我正在制作游戏,我需要关闭 JOptionPane

标签 java swing user-interface joptionpane

int confirmDialog = JOptionPane.showConfirmDialog(null, "You selected quit! \nAre you sure you want to quit?", "Selected Quit", JOptionPane.YES_NO_OPTION);


if(confirmDialog == 0)                  
  System.exit(0);           
//focus under this comment here                     
if(confirmDialog == 1) {                    
  game.reset();                 
  displayBoard();                       
}

我用棋盘做了一个游戏。我有一个退出按钮来退出游戏。当用户单击该按钮时,系统会提示上面的 JOptionPane。它询问他们是否确定要退出。我可以关闭游戏,但我的问题是当用户选择“否”时。 我希望用户能够单击“否”并拥有它,以便游戏重置,我可以看到棋盘重置。但 optionPane 不会消失,我希望 OptionPane 消失,以便他们可以玩。

最佳答案

由于您的确认对话框有两种可能的结果,您可以编写一个简单的 if-else block ,如下所示:

int confirmDialog = JOptionPane.showConfirmDialog(null, "You selected quit! \nAre you sure you want to quit?", "Selected Quit", JOptionPane.YES_NO_OPTION);

if(confirmDialog == JOptionPane.YES_OPTION) {               
    System.exit(0);           
    //focus under this comment here                     
} else {                    
    game.reset();                 
    displayBoard();                       
}

注意静态字段的使用JOptionPane.YES_OPTION使您的代码更加健壮。

I can see the board reseting. But the optionPane does not go away and i want the OptionPane to go away so they can play.

检查 game.reset() 中的某些内容是否阻塞 Event Dispatch Thread (又名 EDT)。 EDT 是一个单独的特殊线程,Swing 组件在其中进行创建和更新。如果有一些耗时的任务阻塞了 EDT,您的 GUI 可能会变得无响应。查看更多Concurrency in Swing踪迹。

<小时/>

离题

关于这一行:

System.exit(0);

此方法将终止当前正在运行的 JVM,如 System.exit(int status) 中所述。 javadoc。这实际上是一种不好的做法。使用 Swing 时,您应该调用 dispose()在您的 JFrame 上,如果没有挂起的线程在工作,那么应该终止 JVM。

关于java - 我正在制作游戏,我需要关闭 JOptionPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21589521/

相关文章:

Java swing,无法使图像工作

java - JButton 无法识别 JRadioButton 是否被选择

user-interface - flutter 如何创建具有以下内容的容器,以及如何在窗口小部件/容器内部绘制自定义边框

java - 如何在 java 中使用 Apache commons csv api 更新 csv 文件中的记录?

java - Mac OS X 上的 Java 重量级组件

java - 默认可变树节点图标

android - 移动设备上的多选 <select> 框

java - 自定义 JAXB xml 输出

java - Boolean.valueOf(String) 可以返回 null 吗?

Java GUI 对象的动态重新定位