给定以下代码:
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
ClientGUI gui = new ClientGUI();
gui.start();
}
});
}
一切正常,我得到了一个漂亮的 GUI 窗口。好的。 现在,让我们在 gui.start() 之后添加一个无限循环:
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
ClientGUI gui = new ClientGUI();
gui.start();
while (true) {
}
}
});
}
并且输出是一个空白窗口,它不会对窗口退出使用react。 有人可以向我解释一下这里到底发生了什么吗?
最佳答案
Can someone explane me what exactly happans here?
当然。您将事件分派(dispatch)线程保持在无限循环中,因此它永远不会对“关闭窗口”等事件使用react。不要那样做。
您应该尽可能多地保持事件分发线程可用 - 不要对其执行任何长时间运行的任务,包括从文件或网络读取等 IO 操作。
参见 "Concurrency in Swing"教程了解更多详情。
关于java - Java 中 GUI 和线程的奇怪之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241540/