gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:36:53 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com