Javafx treeview 随机添加额外的图标到视图
Javafx treeview adding extra icons randomly to the view
我正在使用 javafx treeview 并且我在我的树视图中添加了图标。
我使用以下代码将图标添加到树项。将 Jfeniox 库用于 material 设计图标。当我单击树项目时,图标随机出现在树视图列表的末尾,如图所示。
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;
}
在单元格的 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);
...
我正在使用 javafx treeview 并且我在我的树视图中添加了图标。
我使用以下代码将图标添加到树项。将 Jfeniox 库用于 material 设计图标。当我单击树项目时,图标随机出现在树视图列表的末尾,如图所示。
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;
}
在单元格的 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);
...