如何将更改侦听器添加到 javaFX 中任务的消息 属性

How to add change listener to message property of task in javaFX

我正在使用 JavaFX 任务来执行耗时的代码,该代码在 for 循环中处理多个项目。 任务的进度由从 for 循环内部更新的进度条指示。 然而,除了进度条,我还有一些标签,这些标签根据要处理的项目总数和当前正在处理的项目来指示进度。 我试图将任务的 messageProperty 绑定到标签 textProperty,但是我有多个标签需要更新,而 messageProperty 可以容纳一个 String。 我考虑用逗号分隔值字符串更新 messageProperty,然后像这样拆分字符串

label1.textProperty().bind(task.messageProperty().toString().split(",")[0]);
label2.textProperty().bind(task.messageProperty().toString().split(",")[1]);
label3.textProperty().bind(task.messageProperty().toString().split(",")[2]);

但是我得到一个错误

The method bind(ObservableValue<? extends String>) in the type Property<String> is not applicable for the arguments (String)

所以我正在考虑将 ChangeListener 添加到 messageProperty 并从 ChangeListener

中更新标签

有人可以帮我确定哪种方法最好以及如何为 messageProperty 编写 ChangeListener 吗?

两者都

label1.textProperty.bind(Bindings.createStringBinding(
    () -> task.getMessage().split(",")[0],
    task.messageProperty());
//...

task.messageProperty().addListener((obs, oldMsg, newMsg) -> {
    label1.setText(newMsg.split(",")[0]);
    // ...
})