Frame关闭但应用程序没退出,这是为什么?

程序中使用了frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);但窗口关闭后应用程序依然无法退出

你是否有 addShutdownHook ?
并在其中做了某些耗时操作甚至死循环?

或者你是否是给 Frame 添加了窗口监听器,
并且在 windowClosing 方法中做了某些耗时操作?

没有死循环,但frame关闭时有可能循环在运行,有影响不?

你窗体是怎么关闭的?
点击的 X 吗?
还是用什么别的语句关闭的?

另外还有一种可能
就是你添加了 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 的那个窗体
有没有可能并不是最终显示出来的那个窗体?

点击X关闭窗口的

如果你代码不多的话,可以发上来看一下
如果代码比较复杂不便于发的话,我只能给你说几个我遇到过的引起类似问题的情景了:
1、addShutdownHook 时,不小心添加了耗时代码
2、addShutdownHook 中的代码执行时,和 EDT 发生了线程互锁
3、有 JNI 相关代码未释放系统资源
4、eclipse 长时间运行后自己出了异常,
99LRC歌词程序实际上已经退了,但是控制台看起来依然处于运行状态

谢谢您的指导!经过修改测试,改成捕获frame退出事件自己控制就可以了,问题的原因应该是 之前frame关闭时循环还在运行所以应用程序不能结束。自己控制后,让这些循环正常结束就可以了,谢谢您!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值