2013-07-26 31 views
6

Trong JavaFX, tôi có một lớp điều khiển mà kéo các thành phần điều khiển từ một tập tin FXML và có phương pháp tác động lên thành phần, hiển thị với một Label ở đây:JavaFX: Đang cập nhật phần UI trong một lớp điều khiển từ một chủ đề

public class ViewController { 
    @FXML private Label labelStatus; 

    public void updateStatusLabel(String label) { 
     labelStatus.setText("Status: " + label); 
    }  
} 

tôi cũng có một chủ đề Java với một phương pháp run(), như thế này:

public class Server extends Thread { 

    public void run() { 
     super.run();  
    } 
} 

chủ đề This server xử lý một số kết nối ổ cắm mà tôi cần cho ứng dụng cụ thể của tôi. Sau khi kết nối được thiết lập (trong phương thức run() - không được hiển thị), tôi cần cập nhật Nhãn trong Bộ điều khiển FXML. Làm thế nào tôi sẽ làm điều này?

Lưu ý: Tôi đã cố ý tạo mã và câu hỏi chung để có thể giúp những người khác có cùng vấn đề.

Trả lời

4

Bạn gọi Platform.runLater(runnable) tắt chuỗi giao diện người dùng JavaFX để thực thi một runnable cập nhật các thành phần của biểu đồ cảnh JavaFX đang hoạt động trên chuỗi giao diện người dùng JavaFX.

Cũng xem lại Concurrency in JavaFX, với các lớp học TaskService và xem đó có phải là giải pháp thích hợp hơn cho công việc cụ thể của bạn hay không.

Để biết thêm thông tin, xem:

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