Я пытаюсь выяснить, как связать флажок с моделью выбора его строки, чтобы при выборе пользователем одной или нескольких строк соответствующие флажки выбирались, а если пользователь выбирал один или несколько флажков, соответствующие выделены строки.
В конечном счете, мне нужно иметь возможность использовать API TableView.getSelectionModel () для выделения выбранных элементов из таблицы.
class PersonTable
extends TableView<Person> {
PersonTable() {
this(FXCollections.observableArrayList());
}
PersonTable(final ObservableList<Person> items) {
super(items);
setEditable(true);
getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
final TableColumn<Person, CheckBox> selectedColumn = new TableColumn<>();
selectedColumn.setCellFactory(param -> {
final CheckBoxTableCell<Person, CheckBox> cell = new CheckBoxTableCell<>();
cell.setSelectedStateCallback(index -> {
final boolean selected = getSelectionModel().isSelected(index);
return new SimpleBooleanProperty(selected);
});
return cell;
});
final TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(param -> {
final Person person = param.getValue();
final String name = person.getName();
return new SimpleStringProperty(name);
});
final TableColumn<Person, String> ageColumn = new TableColumn<>("Age");
ageColumn.setCellValueFactory(param -> {
final Person person = param.getValue();
final String age = person.getAge();
return new SimpleStringProperty(age);
});
final TableColumn<Person, String> sexColumn = new TableColumn<>("Sex");
sexColumn.setCellValueFactory(param -> {
final Person person = param.getValue();
final String sex = person.getSex();
return new SimpleStringProperty(sex);
});
getColumns().add(selectedColumn);
getColumns().add(nameColumn);
getColumns().add(ageColumn);
getColumns().add(sexColumn);
}
}
Приведенное выше отображение таблицы , и каждая строка получает флажок, который можно установить и снять, но я не могу понять, как связать выбранное значение флажка с выбранным значением строки.