TableCell不会使用自定义CellFactory

时间:2019-03-14 14:56:41

标签: java javafx tableview tablecolumn

我在TableColumn上安装了一个自定义的CellValueFactory和CellFactory:我正在编写通讯簿,称呼是一个具有值“ Mr”和“ Mrs”的枚举。

salutation.setCellValueFactory(c->new ReadOnlyObjectWrapper<>(c.getValue().getSalutation()));
salutation.setCellFactory((tableColumn)->new TableCell());

不幸的是,我的CellFactory设置的单元格什么也没有显示。 (注意:实际上我想使用自定义TableCell,我仅使用TableCell进行测试)。 在每个单元格上显示item.toString()字符串的最佳方法是什么?

谢谢:)

谢谢

1 个答案:

答案 0 :(得分:1)

  

注意:实际上我想使用自定义TableCell,我只使用TableCell进行测试

这正是问题所在。 TableCell与默认单元工厂所产生的单元类型相反,只是更新了该单元的empty属性。取消此初始化或将工厂分配替换为

salutation.setCellFactory(TableColumn.DEFAULT_CELL_FACTORY);

将显示在单元格项目上调用toString的结果,以及以下cellFactory的结果:

salutation.setCellFactory((tableColumn)->new TableCell() {

    @Override
    protected void updateItem(Object item, boolean empty) {
        super.updateItem(item, empty);
        setText(item == null ? "" : item.toString());
    }

});

注意:我建议不要使用原始类型,但是由于缺乏对所涉及类型的了解,因此我决定在上述代码段中继续使用原始类型。