我正在尝试在javaFX中创建一个可编辑的表视图动态,我已经有一个动态表加载来自对象的值并且工作正常,但我无法使其可编辑。
我用这个
创建了dinamic表ArrayList<reportes> rs = BD.ConsultarVarios(selecionado);
for (int column = 1; column +1< rs.size(); column++) {
tablevarios.getColumns().add(
createColumn(column, rs.get(column).getNombre()));
}
// Add data to table:
ArrayList<ObservableList<StringProperty>> data = new ArrayList<>(FXCollections.observableArrayList());
for (int i = 0; rs.get(0).getValor().size() > i; i++) {
ObservableList<StringProperty> data2 = FXCollections.observableArrayList();
for (int k = 0; rs.size() > k+1; k++) {
data2.add(new SimpleStringProperty(rs.get(k).getValor().get(i)));
}
data.add(data2);
tablevarios.getItems().add(data.get(i));
}
但是当我尝试使用此
进行编辑时 tablevarios.getColumns().get(i).setCellFactory(column -> new EditCell());
我从控制台出现此错误
错误:(1687,78)java:不兼容的类型:lambda表达式中的错误返回类型 sample.Main.EditCell无法转换为javafx.scene.control.TableCell,捕获#1&gt;
感谢您的帮助
答案 0 :(得分:0)
您的EditCell是否扩展了ListCell?
我在我的项目中这样做了:
class EditCell extends ListCell<?> {
// your cell properties here
@Override
protected void updateItem(Object item, boolean empty) {
super.updateItem(item, empty);
}
tablevarios.getColumns().get(i).setCellFactory(lv -> {
ListCell<?> cell = new EditCell();
//maybe add context menu to cell or other thins
return cell;
}