首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DefaultMutableTreeNode图标

DefaultMutableTreeNode图标
EN

Stack Overflow用户
提问于 2013-01-23 23:32:06
回答 3查看 1.8K关注 0票数 0

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

如何才能使节点始终显示文件夹图标,尽管(尚未)有子项?

EN

回答 3

Stack Overflow用户

发布于 2013-01-23 23:40:57

你需要为你的树实现单元格渲染器。所以你可以为节点定义图标。See here表的示例(树也有setCellRenderer方法)

票数 2
EN

Stack Overflow用户

发布于 2013-01-24 23:03:59

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

代码语言:javascript
复制
// 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);
票数 1
EN

Stack Overflow用户

发布于 2013-02-19 09:32:47

我使用的是:

代码语言:javascript
复制
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

使用

代码语言:javascript
复制
if (file.isDirectory ())
  newNode.setAllowsChildren (true);

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14483251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档