2012-10-20 62 views
8

所以我知道JavaFx在使用線程時更新GUI的方法稱爲Task,但代碼的工作方式與此類似,或者存在任何差異。讓我給你擺例如:對SwingUtilities.invokeLater的JavaFx響應

運行的線程

public void run(){ 
    while (socket.isConnected()) { 
     String x = input.next(); 
     System.out.println(x); 
     mg.updateChat(x) 
    } 
} 

內的實際GUI

public void updateChat(final String input){ 
    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      txtChat.setText(input); 
     } 
    }); 
} 

不工作的GUI之外的另一類工作完全一樣辦法?或者是否存在差異,以及如何修改此代碼以在JavaFx項目中工作?

回答

15

您是否正在尋找JavaFX中的SwingUtil.invokeLater對應項。如果是,它是:

Platform.runLater(java.lang.Runnable runnable) 
+0

它是否以完全相同的方式工作? –

+0

據我瞭解[api](http://docs.oracle.com/javafx/2/api/javafx/application/Platform.html),是的。我使用它來更新多線程環境中的javafx ui控件,就像我使用Swing控件的SwingUtilities.invokeLater一樣。 – amru

+0

這裏沒有運氣,我的UI在執行runLater時凍結。 –