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/