我有以下代码:
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));
}
}
}
});