【问题标题】:JavaFX: Updating UI elements in a Controller class from a ThreadJavaFX:从线程更新控制器类中的 UI 元素
【发布时间】:2013-07-26 06:22:33
【问题描述】:

在 JavaFX 中,我有一个 Controller 类,它从 FXML 文件中提取控制组件并具有作用于该组件的方法,此处显示为 Label:

public class ViewController {
    @FXML private Label labelStatus;

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

我还有一个带有 run() 方法的 Java 线程,如下所示:

public class Server extends Thread {

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

此服务器线程处理我的特定应用程序所需的一些套接字连接。建立连接后(在 run() 方法中——未显示),我需要更新 FXML 控制器中的标签。我该怎么做?

注意:我特意将我的代码和问题进行了通用化,这样可以帮助其他有同样问题的人。

【问题讨论】:

    标签: java multithreading user-interface javafx


    【解决方案1】:

    您从 JavaFX UI 线程调用 Platform.runLater(runnable) 以执行可更新 JavaFX UI 线程上活动 JavaFX 场景图元素的可运行文件。

    还可以查看 Concurrency in JavaFX 以及 TaskService 类,看看这是否不是更适合您的特定任务的解决方案。

    更多信息,请参见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-26
      • 2014-03-26
      • 2014-05-11
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多