JavaFX 8 - 如何删除具有工具提示的表格单元格?

时间:2014-11-28 07:35:24

标签: tooltip tableview javafx-8 tablecell

我想从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;
});

1 个答案:

答案 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;
});