我在JTree
个JContentPane
对象中显示了DefaultMutableTreeNode
。树旨在显示本地文件系统。应该根据请求加载数据,因此当用户想要扩展它时。这很有效,但只要节点中没有子项,它就会显示一个文件图标,并在插入子项时变为文件夹图标。
如果(还)没有子项目,如何让节点始终显示文件夹图标?
答案 0 :(得分:2)
您需要为树实现单元格渲染器。因此,您可以为节点定义图标。
See here表格的示例(树也有方法setCellRenderer
)
答案 1 :(得分: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);
答案 2 :(得分: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)。