我有以下代码:
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()
的{{1}}方法。
在没有将类型转换为int
的情况下,是否可以执行此操作?
提前致谢。
答案 0 :(得分:2)
使用单元工厂(除现有单元格值工厂之外)更改值的显示方式:
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));
}
}
}
});