我有以下代码:

costCol_.setCellValueFactory(cellData -> new SimpleIntegerProperty(cellData.getValue().getCost()));
table_.getItems().addAll(SomeEnumType.values());



@FXML
private TableView<SomeEnumType> table_;
@FXML
private TableColumn<7, Number> costCol_;


costCol中的某些值可以为0 / -1,当前(来自SomeEnumType.getCost())显示为0或-1。
我不想将它们显示为0而不是一个空单元格。可能吗?
我已经检查了SimpleIntegerBase,据我了解,返回的值来自返回get()int方法。

是否可以在不将类型转换为String的情况下执行此操作?

提前致谢。

最佳答案

使用单元格工厂(除了现有的单元格值工厂之外)来更改值的显示方式:

costCol.setCellFactory(tc -> new TableCell<SomeEnumType, Number>() {
    @Override
    protected void updateItem(Number item, boolean empty) {
        super.updateItem(item, empty) ;
        if (empty) {
            setText(null);
        } else {
            int value = item.intValue();
            if (value <= 0) {
                setText("");
            } else {
                setText(Integer.toString(value));
            }
        }
    }
});

07-26 05:17