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

相关问题