JavaFX - Как обратиться к соседу ячейки в табличном представлении
Я работаю над созданием таблицы в JavaFX, которая содержит редактируемые свойства. Я хочу иметь возможность начать редактирование, фиксировать изменения и отменить с помощью кнопок, которые будут включены в каждую строку; Тем не менее, я испытываю некоторые трудности со ссылкой на ячейку, которую я хочу начать редактировать. В идеале я хотел бы сделать что-то похожее на это:
controller.buttonColumn.setCellFactory(p -> new TableCell<TableItem, String>(){
@Override
protected void updateItem(String s, boolean empty) {
super.updateItem(s, empty);
if (getTableRow().getItem()==null){
setGraphic(null);
return;
}
Button editButton = new Button("Edit");
editButton.setOnAction(event -> {
getTableRow().getCell(1).startEdit();
});
setGraphic(editButton);
});
Это не работает, потому что TableRow не имеет метода для доступа к определенным ячейкам. Точно так же я мог бы использовать такую строку:
. GetTableView () getEditingCell() CancelEdit ().
для моей кнопки отмены, но метод getEditingCell() возвращает не TableCell, а TablePosition, у которого нет метода для доступа к соответствующей ячейке.
Я ищу способ доступа к ячейке в TableView, если она соседа.
1 ответ
Вы можете использовать TableView.edit(int row, TableColumn<S,?> column)
метод:
controller.buttonColumn.setCellFactory(p -> new TableCell<TableItem, String>(){
@Override
protected void updateItem(String s, boolean empty) {
super.updateItem(s, empty);
if (getTableRow().getItem()==null){
setGraphic(null);
return;
}
Button editButton = new Button("Edit");
editButton.setOnAction(event -> {
getTableView().edit(getIndex(), someTableColumn);
});
setGraphic(editButton);
}
});
где someTableColumn
столбец, содержащий ячейку, которую вы хотите начать редактировать.
Вы можете использовать тот же метод, чтобы отменить редактирование:
tableView.edit(-1, null);