使动态tableview javaFX可编辑

时间:2015-08-27 22:08:39

标签: javafx tableview

我正在尝试在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;

感谢您的帮助

1 个答案:

答案 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;
}