2017-07-17 87 views
0

我正在使用JavaFX任务来执行处理for循环中的多个项目的耗时代码。 任务的进度通过在for循环内更新的进度条指示。 但是,除了进度条之外,我还有一些标签,用于指示要处理的总项目和当前正在处理的项目的进度。 我试图将任务的messageProperty绑定到标签textProperty,但是我有多个需要更新的标签,并且messageProperty可以容纳一个String。 我认为用逗号分隔值的字符串更新messageProperty然后分裂这样如何在javaFX中添加更改侦听器到任务的消息属性

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) 

所以我正在考虑加入ChangeListenermessageProperty和更新ChangeListener

有人可以帮我确定哪种方法最好,以及如何编写ChangeListenermessageProperty

回答

1

要么

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

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