【问题标题】:Javafx treeview adding extra icons randomly to the viewJavafx treeview 将额外的图标随机添加到视图中
【发布时间】:2018-01-01 10:45:14
【问题描述】:

我正在使用 javafx 树视图,并在树视图中添加了图标。

我使用以下代码将图标添加到树项。使用 Jfeniox 库进行材料设计图标。当我单击树项时,图标会随机出现在树视图列表的末尾,如图所示。

rootTreeView.setCellFactory(tv -> new TreeCell<LeafItem>() {
        @Override
        public void updateItem(final LeafItem item, final boolean empty) {
            super.updateItem(item, empty);

            setText(null);
            setTooltip(null);
            setContextMenu(null);

            if (!empty) {
                if (getTreeItem().equals(rootTreeItem)) {
                    if (item == null) {
                        setText("sasa");
                    }
                }
                if (item instanceof Project) {
                    final Project project = (Project) item;
                    setText(project.getName());
                    setGraphic(createIcon(MaterialDesignIcon.FOLDER));
                }
            }
        }
    });
private MaterialDesignIconView createIcon(final MaterialDesignIcon icon) {
    final MaterialDesignIconView materialDesignIconView = new MaterialDesignIconView(
            icon);
    materialDesignIconView.setSize("1.5em");
    materialDesignIconView.setStyleClass("icon-color");
    return materialDesignIconView;
}

【问题讨论】:

  • 如果单元格为空,你也必须将图形设置为null...

标签: javafx javafx-8 javafx-2


【解决方案1】:

在单元格的updateItem 方法中,不要将graphic 属性设置为null,以防单元格为空或项目不是Project 的实例。由于可以将项目重新分配给单元格,因此您需要执行此操作才能从单元格中删除图标:

@Override
public void updateItem(final LeafItem item, final boolean empty) {
    super.updateItem(item, empty);

    setText(null);
    setTooltip(null);
    setContextMenu(null);
    setGraphic(null);

    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多