Ошибка при попытке получить значение данных ячейки 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));
Другие вопросы по тегам