2016-11-18 3 views
0

Я пытаюсь получить значение текущей ячейки, я сопоставляю список массивов с одним столбцом.Ошибка При попытке получить значение данных ячейки 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); 

Вот моя ошибка:

enter image description here

Как я смогу исправить эту ошибку?

ответ

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)); 
+0

Здравствуйте, спасибо за ваше но я не пытаюсь отобразить номер строки, вместо этого хочу заполнить данные в этом конкретном столбце. – Milan

+0

@Milan Лучше сейчас? Непонятно, почему вы используете 'ObservableList ' как тип элемента вместо одного, содержащего свойство для имени, хотя, поскольку, по-видимому, нет никакой связи между содержимым ячейки и элементом ... – fabian

+0

Причина, по которой я использую ObservableList как тип элемента, потому что я заполняю остальные столбцы данными от arraylist. ' – Milan

Смежные вопросы