通过通用方法使单元格可编辑

时间:2017-05-06 11:38:56

标签: java generics javafx cell

我有这个方法:

  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());

到我的第一个通用方法。

0 个答案:

没有答案