2017-07-17 23 views
0

私はJavaFXタスクを使用して、forループ内のいくつかの項目を処理する時間のかかるコードを実行しています。 タスクの進行状況は、forループ内から更新されるプログレスバーによって示されます。 しかし、進行状況バーには、処理されるべきアイテムの総数と処理されている現在のアイテムに関する進捗状況を示すラベルもあります。 私は仕事のmessagePropertyをラベルtextPropertyにバインドしようとしましたが、更新が必要な複数のラベルがあり、messagePropertyは単一のStringを保持できます。 私はカンマ区切り形式の文字列でmessagePropertyを更新して、しかし私は、だから私はmessagePropertyChangeListenerを追加し、更新中にエラーjavaFXのタスクのmessageプロパティにchange listenerを追加するには

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

を検討しています。この

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

のような文字列を分割すると考えられChangeListener

どのアプローチがベストで、どのように書くのを手伝ってもらえますかの?

答えて

1

いずれ

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

又は

task.messageProperty().addListener((obs, oldMsg, newMsg) -> { 
    label1.setText(newMsg.split(",")[0]); 
    // ... 
}) 
関連する問題