我在TableColumn上安装了一个自定义的CellValueFactory和CellFactory:我正在编写通讯簿,称呼是一个具有值“ Mr”和“ Mrs”的枚举。
salutation.setCellValueFactory(c->new ReadOnlyObjectWrapper<>(c.getValue().getSalutation()));
salutation.setCellFactory((tableColumn)->new TableCell());
不幸的是,我的CellFactory设置的单元格什么也没有显示。 (注意:实际上我想使用自定义TableCell,我仅使用TableCell进行测试)。 在每个单元格上显示item.toString()字符串的最佳方法是什么?
谢谢:)
谢谢
答案 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());
}
});
注意:我建议不要使用原始类型,但是由于缺乏对所涉及类型的了解,因此我决定在上述代码段中继续使用原始类型。