TableCell 不显示带有自定义 CellFactory 的 item.toString() 值
TableCell doesn't show item.toString() value with custom CellFactory
我在我的 TableColumn 上安装了一个自定义的 CellValueFactory 和 CellFactory:我正在编写地址簿,Salutation 是一个枚举值 "Mr" 和 "Mrs"。
salutation.setCellValueFactory(c->new ReadOnlyObjectWrapper<>(c.getValue().getSalutation()));
salutation.setCellFactory((tableColumn)->new TableCell());
不幸的是,我的 CellFactory 设置的单元格没有显示任何内容。
(注意:其实我想用自定义的TableCell,我只用TableCell做测试)。
在每个单元格上显示 item.toString() 字符串的最佳方式是什么?
谢谢:)
谢谢
Note: actually I want to use a custom TableCell, I only used TableCell for testing
这正是问题所在。 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());
}
});
注意:我建议不要使用原始类型,但由于缺乏对所涉及类型的了解,我决定在上面的代码片段中继续使用原始类型。
我在我的 TableColumn 上安装了一个自定义的 CellValueFactory 和 CellFactory:我正在编写地址簿,Salutation 是一个枚举值 "Mr" 和 "Mrs"。
salutation.setCellValueFactory(c->new ReadOnlyObjectWrapper<>(c.getValue().getSalutation()));
salutation.setCellFactory((tableColumn)->new TableCell());
不幸的是,我的 CellFactory 设置的单元格没有显示任何内容。 (注意:其实我想用自定义的TableCell,我只用TableCell做测试)。 在每个单元格上显示 item.toString() 字符串的最佳方式是什么?
谢谢:)
谢谢
Note: actually I want to use a custom TableCell, I only used TableCell for testing
这正是问题所在。 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());
}
});
注意:我建议不要使用原始类型,但由于缺乏对所涉及类型的了解,我决定在上面的代码片段中继续使用原始类型。