我想从TableView中删除TableCells。所以我称之为:
table.getItems().remove(item);
正确删除TableCell,但工具提示将显示在下一个TableCell上。 例如:当我删除第一个Cell时,ToolTip将显示在第二个Cell上(现在是第一个)。 我该如何避免这个问题?
我的CellFactory看起来像这样:
column.setCellFactory(c -> {
TableCell<DataItem, DataItem> cell = new TableCell<DataItem, DataItem>() {
@Override
protected void updateItem(DataItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
setText(item.getName());
if (item.getDescription() != null && !item.getDescription().isEmpty()) {
setTooltip(new Tooltip(item.getDescription()));
}
}
}
};
return cell;
});
答案 0 :(得分:2)
处理item
为空的情况。如果您根据&#34;从表模型中删除数据&#34;而不是&#34;删除单元格&#34; (你根本不删除任何单元格,只是改变现有单元格显示的数据),这应该是有意义的。
column.setCellFactory(c -> {
TableCell<DataItem, DataItem> cell = new TableCell<DataItem, DataItem>() {
@Override
protected void updateItem(DataItem item, boolean empty) {
super.updateItem(item, empty);
if (item == null) {
setText(null);
setTooltip(null);
} else {
setText(item.getName());
if (item.getDescription() != null && !item.getDescription().isEmpty()) {
setTooltip(new Tooltip(item.getDescription()));
} else {
// may need something here, depending on your application logic...
}
}
}
};
return cell;
});