Как добавить двунаправленное связывание выбора CheckBox с выбором строки в TableView? - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь выяснить, как связать флажок с моделью выбора его строки, чтобы при выборе пользователем одной или нескольких строк соответствующие флажки выбирались, а если пользователь выбирал один или несколько флажков, соответствующие выделены строки.

В конечном счете, мне нужно иметь возможность использовать 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);
    }
}

Приведенное выше отображение таблицы , и каждая строка получает флажок, который можно установить и снять, но я не могу понять, как связать выбранное значение флажка с выбранным значением строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...