2012-10-20 37 views
8

Vì vậy, tôi biết rằng phương pháp cập nhật GUI của JavaFx trong khi sử dụng một luồng được gọi là Tác vụ nhưng mã có hoạt động theo cách tương tự hoặc có bất kỳ khác biệt nào không. hãy để tôi cung cấp cho bạn một ví dụ đu:Phản hồi JavaFx với SwingUtilities.invokeLater

Một lớp ngoài GUI chạy như một sợi

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

Bên trong giao diện thực tế

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

Liệu công tác làm việc cùng chính xác đường? Hoặc có sự khác biệt và nếu có làm thế nào bạn sẽ sửa đổi mã này để làm việc trong một dự án JavaFx?

Trả lời

15

Bạn đang tìm kiếm các đối tác SwingUtil.invokeLater trong JavaFX. Nếu có, đó là:

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

Có hoạt động chính xác không? –

+0

Theo như tôi có thể hiểu [api] (http://docs.oracle.com/javafx/2/api/javafx/application/Platform.html), vâng. Tôi sử dụng nó để cập nhật các điều khiển javafx ui trong môi trường đa luồng giống như tôi sử dụng SwingUtilities.invokeLater cho các điều khiển Swing. – amru

+0

Không có may mắn ở đây, giao diện người dùng của tôi bị đóng băng khi tôi đang chạy runLater. –

Các vấn đề liên quan