Этот метод возвращает null
, если не установлено cellValueFactory
. Кроме того, у вас должна быть модель для удержания этого состояния - TableView
- это просто представление. В отличие от TableViewSelectionModel
, который представляет элементы, выбранные исключительно в контексте самого TableView
, столбец, содержащий CheckBox
es, представляет «логическое состояние» свойства модели . Например:
public class ToDoTask {
private final StringProperty name = new SimpleStringProperty(this, "name");
private final BooleanProperty complete = new SimpleBooleanProperty(this, "complete");
// constructors, getters, setters, and property-getters omitted for brevity
}
A TableView
для отображения этого класса можно настроить следующим образом:
TableView<ToDoTask> table = new TableView<>();
table.setItems(...);
TableColumn<ToDoTask, String> nameCol = new TableColumn<>("Name");
nameCol.setCellValueFactory(features -> features.getValue().nameProperty());
table.getColumns().add(nameCol);
TableColumn<ToDoTask, Boolean> completeCol = new TableColumn<>("Complete");
completeCol.setCellValueFactory(features -> features.getValue().completeProperty());
completeCol.setCellFactory(CheckBoxTableCell.forTableColumn(completeCol));
table.getColumns().add(completeCol);
Затем вы запросите, выполнена ли задача, обратившись к модели:
table.getItems().get(...).isComplete();
Другой вариант настройки cellValueFactory
состоит в том, чтобы зарегистрировать Callback
на самих CheckBoxTableCell
. См CheckBoxTableCell#forTableColumn(Callback)
.
Также обратите внимание, что getCellObservableValue()
возвращает ObservableValue
. A CheckBox
не является ObservableValue
. Если бы вы не получили null
, вы бы получили ClassCastException
.