2012-10-20 13 views
8

Tak więc zdaję sobie sprawę, że metoda aktualizacji GUI JavaFxa podczas korzystania z wątku nazywa się Zadanie, ale czy kod działa w podobny sposób, czy istnieją jakieś różnice. podam wam przykład SwingOdpowiedź JavaFx na SwingUtilities.invokeLater

Inna klasa poza GUI, który działa jako wątek

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

Wewnątrz rzeczywistej GUI

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

Does Task pracować dokładnie to samo droga? Czy istnieją różnice i czy jest jak zmodyfikować ten kod do pracy w projekcie JavaFx?

Odpowiedz

15

Poszukujesz SwingUtil.invokeLater odpowiedników w JavaFX. Jeśli tak, to:

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

Czy działa dokładnie w ten sam sposób? –

+0

O ile mogę zrozumieć [api] (http://docs.oracle.com/javafx/2/api/javafx/application/Platform.html), tak. Używam go do aktualizowania kontrolek javafx ui w środowisku wielowątkowym, tak samo jak używam SwingUtilities.invokeLater dla kontrolek Swing. – amru

+0

Brak szczęścia tutaj, mój interfejs użytkownika zawiesza się, gdy robię runLater. –