我有这个方法:
private static <S,T> TableColumn<S,T> createColumn(String title, Function<S, Property<T>> property) {
TableColumn<S,T> col = new TableColumn<>(title);
col.setCellValueFactory(cellData -> property.apply(cellData.getValue()));
col.setOnEditCommit(edit -> {
S rowValue = edit.getRowValue();
property.apply(rowValue).setValue(edit.getNewValue());
});
return col ;
}
使用此方法我创建列并将其添加到tableview;
TableColumn<Model, String> name = createColumn("name", Model::model_nameProperty);
数据加载正常,列显示值正常。 但是我无法编辑专栏的细胞,
所以我尝试将cellFactory添加到我的通用方法中:
private static <S,T> TableColumn<S,T> createColumn(String title, Function<S, Property<T>> property) {
TableColumn<S,T> col = new TableColumn<>(title);
col.setCellValueFactory(cellData -> property.apply(cellData.getValue()));
col.setCellFactory(c-> new TableCell());
col.setOnEditCommit(edit -> {
S rowValue = edit.getRowValue();
property.apply(rowValue).setValue(edit.getNewValue());
});
return col ;
}
但这根本不起作用,然后我删除了: col.setCellFactory(c-&gt; new TableCell());
并使用我原来的方法(来自这个线程的第一个方法); 但我加了
name.setCellFactory(TextFieldTableCell.forTableColumn());
现在它有效。但有没有办法添加这个
name.setCellFactory(TextFieldTableCell.forTableColumn());
到我的第一个通用方法。