2017-07-09 36 views
0

私はコンボボックスを持っています。テーブルビューはTableView<Person>と3列です。 コンボボックスで選択した項目ごとに更新されたデータをTableViewに入力したいとします。Javafx TableViewデータのリフレッシュ

私の問題:コンボボックスでアイテムを選択するたびに、テーブルビューのデータが追加されます。選択したアイテムについてのみ詳細を表示します。

コード:

public class MyTableController { 

    private TableView<Person> personTableView; 
    private ObservableList<Person> personTableViewData= FXCollections.observableArrayList(); 


    initialize() { 
     comboBox.valueProperty().addListener(new ChangeListener<String>() { 
      @Override public void changed(ObservableValue ov, String oldValue, String newValue) { 
       List<Person> filteredPersonList = 
           personList.stream().filter(person -> person.getFirstName().contains(newValue)).collect(Collectors.toList()); 

       personTableViewData.addAll(filteredPersonList); 
       personTableView.setItems(personTableViewData); 

      } 
     } 

答えて

1

使用ObservableList.setAll代わりObservableList.addAllまたは代わりの新しいObservableListを作成します。それ以外の場合は、アイテムを置き換える代わりに、すべての変更の同じリストに新しいアイテムを追加します。

initialize() { 
    personTableView.setItems(personTableViewData); 

    comboBox.valueProperty().addListener(new ChangeListener<String>() { 
     @Override public void changed(ObservableValue ov, String oldValue, String newValue) { 
      List<Person> filteredPersonList = 
          personList.stream().filter(person -> person.getFirstName().contains(newValue)).collect(Collectors.toList()); 

      personTableViewData.setAll(filteredPersonList); 
     } 
    } 
関連する問題