2012-10-20 11 views
8

So ist mir bekannt, dass JavaFx Methode der Aktualisierung der GUI bei der Verwendung eines Threads Task genannt wird, aber funktioniert der Code in ähnlicher Weise oder gibt es Unterschiede. lassen Sie mich Ihnen eine Schaukel Beispiel:JavaFx Antwort auf SwingUtilities.invokeLater

Eine andere Klasse außerhalb der GUI, die

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

Innerhalb der eigentlichen GUI als Thread läuft

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

Does Aufgabe arbeiten, um die exakt gleiche Weg? Oder gibt es Unterschiede und wenn Sie möchten, wie würden Sie diesen Code ändern, um in einem JavaFx-Projekt zu arbeiten?

Antwort

15

Suchen Sie nach SwingUtil.invokeLater Gegenstücke in JavaFX. Wenn ja, ist es:

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

Funktioniert es genau so? –

+0

Soweit ich [die API] verstehen kann (http://docs.oracle.com/javafx/2/api/javafx/application/Platform.html), ja. Ich benutze es um javafx-Steuerelemente in Multithread-Umgebungen zu aktualisieren, genau wie ich SwingUtilities.invokeLater für Swing-Steuerelemente verwende. – amru

+0

Kein Glück hier, meine Benutzeroberfläche friert ein, wenn ich runLater mache. –