gpt4 book ai didi

java - 如何避免 JFrame.EXIT_ON_CLOSE 并优雅地终止 swing 程序

转载 作者:行者123 更新时间:2023-11-30 08:13:00 25 4
gpt4 key购买 nike

我不太喜欢JFrame.EXIT_ON_CLOSE选项。如果有一个线程正在写入文件或下载某些内容,则该选项将在完成之前被终止。相反,我试图通过销毁 GUI 窗口来优雅地终止程序:

   /**
* Terminates the whole program while saving settings.
*/
public void Terminate() {
//gui is JFrame representing the application window
gui.setVisible(false);
gui.dispose();
gui.destroyTray();
//Stop tool thread if running
if(ToolRunning())
StopTool();
//Save settings
if(settings==null) {
System.out.println("Settings is null!");
return;
}
try {
settings.loadSettingsFromBoundFields();
settings.saveToFile(SETTINGS_FILE, false);
}
catch(IOException e) {
System.err.println("Problem saving settings:");
e.printStackTrace(System.err);
}
//Here, no non-deamon threads should be running (daemon thread does not prolong the applicatione execution).
}

但是当我 dispose() JFrame 时,程序继续运行,并且 Swing 线程不会退出。还有什么可能阻碍 Swing?当我使用相同的方法(隐藏窗口和 dispose())制作一个更简单的程序时,它起作用了。这意味着我的项目的复杂性隐藏了一些泄漏的东西。如何找到阻止 Swing 线程终止的原因?

最佳答案

关于java - 如何避免 JFrame.EXIT_ON_CLOSE 并优雅地终止 swing 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30095434/

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