我有组合框,tableview为TableView<Person>
和3列。
我想根据我在组合框中选择的项目填充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);
}
}
答案 0 :(得分: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);
}
}