菜单系统工作但无法关闭

时间:2012-07-31 01:03:57

标签: java swing canvas jframe awt

好的,所以我已经开始使用我的菜单系统并使用JFrame。一切似乎工作得很好,直到我点击启动画布的按钮。现在画布所做的是初始化扩展Canvas的JFrame,因此我无法使用线程。一旦帧启动并运行,它将调用一个有一段时间为真的方法{}之后我无法关闭帧。在使用static void main运行canvas应用程序之前,这从来就不是问题。如何解决这个新JFrame问题没有关闭?

2 个答案:

答案 0 :(得分:5)

  

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

不要阻止EDT(事件调度线程) - 当发生这种情况时,GUI将“冻结”。不要创建无限循环,而是为长时间运行的任务实现SwingWorker。有关详细信息,请参阅Concurrency in Swing

答案 1 :(得分:0)

1。在使用GUI应用程序时,这是一个经验法则,始终保持UI工作在UI线程上,非UI工作在非UI线程上。< /强>

2。第二次不要混淆SWINGAWT

3。 Java Gui中的 main()方法不长期在事件调度程序线程(EDT)中安排工作后 main()方法退出。现在它只是EDT处理GUI的责任。

4. 所以永远不要将非UI流程密集型工作与EDT混在一起。

使用EDT处理GUI。

<强>例如

public static void main(String[] args){


     EventQueue.invokeLater(new Runnable(){

                myframe.setVisible(true);

       });


 }