好的,所以我已经建立了我的菜单系统并使用 JFrame 工作。一切似乎都很好,直到我单击启动画布的按钮。现在画布所做的是初始化一个扩展 Canvas 的 JFrame,因此我不能使用线程。一旦框架启动并运行,它就会调用一个方法,在此之后我无法关闭框架。在使用静态 void main 运行画布应用程序之前,这从来都不是问题。如何解决新 JFrame 未关闭的问题?
问问题
67 次
2 回答
5
如何解决新 JFrame 未关闭的问题?
不要阻塞 EDT(事件调度线程)——当这种情况发生时,GUI 将“冻结”。与其创建无限循环,不如实现一个SwingWorker
for 长时间运行的任务。有关更多详细信息,请参阅Swing 中的并发。
于 2012-07-31T01:34:39.113 回答
0
1.在使用 GUI 应用程序时将此作为经验法则,即始终保持 UI 在 UI 线程上工作,非 UI 在非 UI 线程上工作。
2.其次不要混淆SWING
AND AWT
。
3. Java Gui 中的main() 方法寿命不长,在 Event Dispatcher Thread (EDT) 中调度工作后,该main()
方法退出。现在它完全由EDT 负责处理 GUI。
4.因此,切勿将非 UI 流程密集型工作与 EDT 混为一谈。
使用 EDT 处理 GUI。
例如:
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
myframe.setVisible(true);
});
}
于 2012-07-31T09:50:19.280 回答