我有一个包含类型列的tableview(SimpleStringProperty,SimpleIntegerProperty)
STRING1 STRING2 INTEGER1 INTEGER2
####### ####### ######## ########
a b 9 10
a c 9 12
b d 0 0
现在,在第3行中,第3和第4列的值为0.其类型为SimpleIntegerProperty。
如果表中没有显示0并且单元格显示为空,我想要它。 你能告诉我怎么做这个吗?
P.S:我正在使用属性侦听器来制作可编辑的表格。 字符串初始化为null,因此表为空,但整数初始化为0。
答案 0 :(得分:1)
我认为您必须从ListCell扩展并覆盖updateItem方法。 在该方法中,您必须检查SimpleIntegerProperty是否等于0,然后可能调用setText(“”)。
答案 1 :(得分:0)
您必须提供一个TableCellFactory,它返回您自定义的TableCell-Object。在TableCell的updateItem()方法中,您可以按照Lukas Leitinger的建议调用setText()。
TableColumn columnInteger2 = new TableColumn("Integer2");
columnInteger2.setCellValueFactory(
new PropertyValueFactory<MyVo,String>("fieldInteger2"));
columnInteger2.setCellFactory(new Callback<TableColumn, TableCell>() {
@Override
public TableCell call(TableColumn tableColumn) {
return new TableCell<String, Integer>(){
@Override
protected void updateItem(Integer integer, boolean b) {
if (integer != null) {
super.setText(integer == 0?"":integer.toString());
}
}
};
}
});