Ошибка при попытке получить значение данных ячейки JavaFX TableView
Я пытаюсь получить значение текущей ячейки, я сопоставляю список массивов с одним столбцом.
Вот мой код:
TableColumn<ObservableList<String>, String> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(cellData -> {
Integer rowIndex = cellData.getValue();
return new ReadOnlyStringWrapper(rangeArrayList.get(rowIndex));
});
tableView.getColumns().add(nameColumn);
Вот моя ошибка:
Как бы я мог исправить эту ошибку?
1 ответ
Решение
Вы не можете сделать это, используя cellValueFactory
если ваш элемент не содержит информацию о строке, так как нет никакой информации о строке, кроме значения, которое он содержит в TableColumn.CellDataFeatures
,
Если вы хотите использовать номер строки для извлечения данных, вы можете сделать это, используя cellFactory
, так как индекс доступен для TableCell
:
public static <T> Callback<TableColumn<T, Void>, TableCell<T, Void>> cellFactory(final List<?> list) {
return c -> new TableCell<T, Void>() {
@Override
public void updateIndex(int i) {
super.updateIndex(i);
setText(isEmpty() ? "" : Objects.toString(list.get(i), ""));
}
};
}
TableColumn<ObservableList<String>, Void> nameColumn = new TableColumn<>("Name");
nameColumn.setCellFactory(cellFactory(rangeArrayList));