JFrame的一个问题:dispose卡死?

2025-01-03   55 次阅读


今天调试程序发现了一个有意思的问题,调试到:

frame.dispose();

发现卡死了,不往下走了。再仔细研究发现不仅dispose会卡死,其它任何操作都会卡死(例如#setVisable())。

后来想了很久,我觉得问题可能是这样的。我是从一个ShutdownHook中调用的这个代码,而这个ShutdownHook又是从System.exit()中触发的,应该是Swing也注册了类似的钩子,当调用System.exit()时就退出了界面消息循环,导致任何针对界面的操作都会卡死。

解决方法就是直接删除不管即可。

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

No PAINS No GAINS.