如果我的控制器类是
public class FXMLDocumentController implements Initializable {
@FXML
private TextArea msgArea;
public void initialize(URL url, ResourceBundle rb) {
someThread.start();
}
}
Run Code Online (Sandbox Code Playgroud)
如何从线程更改 TextArea 的值?
编辑:我使用任务来解决这个问题。感谢所有试图提供帮助的人。
每当需要从线程更新 UI 元素时,您必须让 JavaFX UI 线程执行此操作。尝试从不同的线程更新元素可能会导致异常,但也可能导致一些意外行为。
幸运的是,JavaFX 提供了一种有用的方法来做到这一点。只需将其添加到在您的单独线程上运行的代码中即可:
Platform.runLater(() -> {
msgArea.setText("Your text");
});
Run Code Online (Sandbox Code Playgroud)
最好使用任务或服务,因为它们提供了更新 UI 元素的内置方法。例如,一个任务允许调用updateMessage("...")或updateProgress("..."),它更新绑定元素而您甚至不需要调用 UI 线程。
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |