gpt4 book ai didi

Java 从工作线程更新 UI

转载 作者:行者123 更新时间:2023-12-02 03:55:27 25 4
gpt4 key购买 nike

我正在使用 JavaFX,我需要以某种方式从工作线程更新 UI 元素。

我的工作线程通过套接字不断监听传入的连接。当它检测到一个时,它会调用 updateListOfConnections() 方法;

我想做的是 updateListOfConnections 非常简单:

this.deviceList.clear();
this.deviceList.addAll(this.contactManager.getContacts().keySet());

if(this.deviceList.size() > 0){
updateConnectButtonState(false);
} else {
updateConnectButtonState(true);
}

如您所见,我影响了此处几个项目的 UI 状态,当我尝试从线程中调用 updateListOfConnections 时,出现异常。

<小时/>

我提出的一些可能的解决方案(这确实不理想)是:

我只需让用户通过按下按钮调用 updateListOfConnections 来手动刷新 deviceList。

或者,有一个循环不断运行,当达到一定的时间间隔时,重置时间间隔并调用 updateListOfConnections。

<小时/>

所以我的主要问题是如何使用 JavaFX 从 Java 中的工作线程更新 UI 元素?

最佳答案

使用Platform#runLater()静态方法,在 JavaFX 应用程序线程上运行指定的 Runnable ;可以从任何线程调用它:

Platform.runLater(() -> {
// The code that you want to run on the JavaFX Application Thread
});

关于Java 从工作线程更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35508416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com