我有一个包含文件夹和子文件夹的树视图。子文件夹的叶子是 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();
}
Run Code Online (Sandbox Code Playgroud)
在 JavaFX 中,ANode
只能同时包含在单个Parent
元素中。
所以你应该将你的Image
s存储为成员变量并ImageView
为每个创建一个新的TreeItem
而不是重用它。
归档时间: |
|
查看次数: |
5056 次 |
最近记录: |