У меня есть TableView
, где последний столбец - это столбец «Действие», содержащий настраиваемый объект ActionBox
с кнопками для нескольких действий. Чтобы добавить поведение к этому ActionBox
, мне нужно передать ему объект Data
. Однако я не знаю, как ссылаться на объект.
class TableViewWithActionColumn() {
@FXML TableColumn<Data, Void> actionColumn;
public TableViewWithActionColumn() {
// Code for loading custom component...
}
@FXML
public void initialize() {
populateActionColumn();
}
private void populateActionColumn() {
Callback<TableColumn<Data, Void>, TableCell<Data, Void>> cellFactory = new Callback<TableColumn<Data, Void>, TableCell<Data, Void>>() {
@Override
public TableCell<Data, Void> call(final TableColumn<Data, Void> param) {
return new TableCell<Data, Void>() {
private final ActionBox actionBox = new ActionBox();
@Override
public void updateItem(Void item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setGraphic(null);
} else {
setGraphic(actionBox);
}
}
};
}
};
actionColumn.setCellFactory(cellFactory);
}
}
Я предположил, что ссылка на объект находится в Void item
, поэтому я попытался заменить все вхождения Void
на Data
, и делает setGraphic(new ActionBox(item));
, но это привело к исключению NullPointerException, поэтому я полагаю, что это неправильный способ сделать это. Итак, как мне ссылаться на данные строки в контексте CellFactory?