1

好的,所以我已经建立了我的菜单系统并使用 JFrame 工作。一切似乎都很好,直到我单击启动画布的按钮。现在画布所做的是初始化一个扩展 Canvas 的 JFrame,因此我不能使用线程。一旦框架启动并运行,它就会调用一个方法,在此之后我无法关闭框架。在使用静态 void main 运行画布应用程序之前,这从来都不是问题。如何解决新 JFrame 未关闭的问题?

4

2 回答 2

5

如何解决新 JFrame 未关闭的问题?

不要阻塞 EDT(事件调度线程)——当这种情况发生时,GUI 将“冻结”。与其创建无限循环,不如实现一个SwingWorkerfor 长时间运行的任务。有关更多详细信息,请参阅Swing 中的并发。

于 2012-07-31T01:34:39.113 回答
0

1.在使用 GUI 应用程序时将此作为经验法则,即始终保持 UI 在 UI 线程上工作,非 UI 在非 UI 线程上工作。

2.其次不要混淆SWINGAND 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 回答