2016-11-18 56 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

@米蘭現在好點?不確定爲什麼你使用'ObservableList '作爲項目類型而不是包含名稱屬性的項目類型,因爲單元格內容和項目之間似乎沒有關係... – fabian

+0

爲什麼我使用ObservableList 作爲項目類型,是因爲我正在用列表中的數據填充其餘列。 ' – Milan

相關問題