我有以下代码:
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,据我了解,返回的值来自返回 int
的 get()
方法。
是否可以在不将类型转换为 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));
}
}
}
});
关于java - 如何忽略TableView中的负值和零值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40360179/