2016-04-24 89 views
0

我有一个无限的while循环等待SwingUtilities.invokeLaterRunnable接口的事件,但执行没有继续...为什么?SwingUtilities.invokeLater无限循环,而不是继续?

//here hello3 prints in cmd but hello2 will not execute 
System.out.println("hello3"); 

//showMessage(); 
SwingUtilities.invokeLater(
    new Runnable(){ 
     public void run() { 
      while(true) { 
       jEditorPane1.setText(s9); 
      } 
     } 
    } 
); 

System.out.println("hello2"); 
+0

从[并发中的Swing]开始(http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)。你正在阻止美国东部时间。 'invokeLater'在将来的某个时间点在EDT上执行'Runnable'方法 – MadProgrammer

回答

3

SwingUtilities.invokeLater将执行事件分派线程中的run方法。

如果所有你告诉我们,被事件派发线程内执行(如果正在一个ActionListener内执行,例如它)的代码的线程正在成为“冻结”的无限循环中。

+0

没有它在任何处理器中使用netbeans形式来设计gui,但它在一个swingutilities.invokelater中生成所有的gui代码,但是即时通讯创建另一种方法,包括在这个类中的代码,我将使用从这个类创建的对象调用 – Theon

+0

'Forum_main fm = new Forum_main(); fm.setVisible(true); fm.getdata(uid,tid); 接近();' – Theon

+0

i将类调用看起来像这样 – Theon