我有一个包含文件夹和子文件夹的树视图。子文件夹的叶子是json文件。我为文件夹和树叶设置了图标。现在,只有根文件夹具有图像。在扩展时,子文件夹会列出箭头标记,但不会列出文件夹图标。在展开箭头时,会显示图标。如何解决这个问题?
private Node rootIcon = new ImageView(new Image(Main.class.getResourceAsStream("images/folder2.png")));
private Node jsonImage = new ImageView(new Image(Main.class.getResourceAsStream("images/jsonImage1.png")));
public ObservableList<TreeItem<File>> buildChildren(TreeItem<File> treeItem) {
File f = treeItem.getValue();
f.getName();
if(treeItem.getValue().isDirectory()){
treeItem.setGraphic(rootIcon);
}else{
treeItem.setGraphic(jsonImage);
}
if (f != null) {
File[] files = f.listFiles();
if (files != null) {
ObservableList<TreeItem<File>> children = FXCollections.observableArrayList();
ChildTreeItem child2=null;
ChildFileTreeItem childFiles=null;
for (File childFile : files) {
try {
if(childFile.isDirectory()){
child2 = new ChildTreeItem(childFile);
//child2.setSplitPane(ApplicationContext.getSplitPane());
children.add(child2);
}else{
childFiles=new ChildFileTreeItem(childFile);
//childFiles.setSplitPane(ApplicationContext.getSplitPane());
childFiles.setGraphic(jsonImage);
children.add(childFiles);
}
} catch (Exception e) {
e.printStackTrace();
}
}
return children;
}
}
return FXCollections.emptyObservableList();
}
答案 0 :(得分:4)
Node
只能在JavaFX中同时包含在单个Parent
元素中。
因此,您应将Image
存储为成员变量,并为每个ImageView
创建一个新的TreeItem
,而不是重复使用。