gpt4 book ai didi

java - JOptionPane 打开时是否可以暂停当前线程?

转载 作者:行者123 更新时间:2023-12-02 11:27:41 33 4
gpt4 key购买 nike

我正在用 Java 开发一个游戏,我试图在 JOptionPane 确认框打开时暂停它。这是代码:

window.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent event) {

int dialogResult = JOptionPane.showConfirmDialog (null, "Would You Like to exit this game? Your progress will not be saved!","Warning",JOptionPane.YES_NO_OPTION);
//What should i do with this???
try {
Thread currentThread = Thread.currentThread();
synchronized(currentThread) {
currentThread.wait();
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
////
if(dialogResult == JOptionPane.YES_OPTION){
exitProcedure();
}
else {
if(dialogResult == JOptionPane.NO_OPTION || dialogResult == JOptionPane.CLOSED_OPTION) {

Thread currentThread = Thread.currentThread();
synchronized(currentThread) {

currentThread.notify();
}

}
}

}
});

这是正确的方法吗?我应该采取哪些不同的措施才能使其发挥作用?

最佳答案

Swing 事件在Event Dispatcher Thread 中处理。并且您不想以任何方式暂停该线程。它处理所有 UI 操作,例如重绘,因此任何暂停都会使您的应用程序无响应。

您必须获取对正在运行后台逻辑的线程的引用,然后暂停它。尽管您没有提供完整的源代码,但它很可能不是 Thread.currentThread() 。您可以使用 SwingUtils.isEventDispatchThread() 检查线程类型方法。

关于java - JOptionPane 打开时是否可以暂停当前线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49501172/

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