0

我有一个从对象构建的JTree显示。该树旨在显示本地文件系统。数据应根据请求加载,因此当用户想要扩展它时。这很好用,但是只要节点中没有子项,它就会显示一个文件图标,并在插入子项时变成一个文件夹图标。JContentPaneDefaultMutableTreeNode

尽管(还)没有子项目,但如何使节点始终显示文件夹图标?

4

3 回答 3

2

您需要为您的树实现单元格渲染器。所以你可以为节点定义图标。 请参阅此处的表格示例(树也有方法setCellRenderer

于 2013-01-23T15:40:57.073 回答
1

使用 DefaultMutableTreeNode(或 TreeNode 的自定义实现),区分文件空文件夹的方法是它的 allowChildren 属性:

// get a list of files
File[] files = new File(".").listFiles();
// configure the nodes' allowsChildren as the isDir of the File object
for (File file : files) {
    root.add(new DefaultMutableTreeNode(file, file.isDirectory()));
}          
// configure the TreeModel to use nodes' allowsChildren property to
// decide on its leaf-ness
DefaultTreeModel model = new DefaultTreeModel(root, true);
于 2013-01-24T15:03:59.127 回答
1

我用这个:

DefaultMutableTreeNode root = new DefaultMutableTreeNode ();
DefaultTreeModel treeModel = new DefaultTreeModel (root);
tree = new JTree (treeModel);
addFiles (root);                            // build the catalog tree recursively
treeModel.setAsksAllowsChildren (true);     // allows empty nodes to appear as folders

if (file.isDirectory ())
  newNode.setAllowsChildren (true);

在 addFiles() 例程中。setAsksAllowsChildren(true) 需要在树构建之后出现。

于 2013-02-19T01:32:46.850 回答