从文件路径生成Java JTree目录结构

3

我一直在努力理解这个问题,希望你们中的一些人能够帮助我。我有一个包含文件完整路径的列表(这些只是字符串,文件位于另一台机器上),例如:

C:\a\b\c\file1.txt
C:\a\b\c\file2.txt
C:\a\d\file3.txt
C:\e\file4.txt

我想创建一个JTree来展示目录结构,就像这样:

C:
  a
   b
    c
     file1.txt
     file2.txt
   d
    file3.tct
  e
   file4.txt

我一直在使用分隔符将字符串拆分,因此最终得到一个类似于数组的列表:

"C:","a","b","c","file1.txt"
"C:","a","b","c","file2.txt"
"C:","a","d","file3.txt"
"C:","e","file4.txt"

现在我想逐个添加它们的索引,但如果该级别上已经存在该值,则跳转到下一个索引。即它将添加第一个数组,然后在第二个数组上,它将进入树的0级,因为已经存在“C:”,所以移动到树的1级和数组的索引1。我面临的问题是,我不知道如何以这种方式导航树形结构。
有任何建议或替代实现吗?

3
请参阅文件浏览器GUI - Andrew Thompson
3个回答

7
File来解析和维护路径。由于你想在一个JTree中显示文件,因此最好创建相应的TreeModel,例如FileTreeModel,引用here。因为它实现了TreeModel,所以它可以“被设置为JTree的模型,然后你就有了一个普通的标准JTree。” 你可以使用任何已挂载文件系统中的任何File作为根目录,例如:
TreeModel model = new FileTreeModel(new File(System.getProperty("user.dir")));
JTree tree = new JTree(model);

image


1

我不确定FileTreeModel是否是最佳选择 - 它会扫描整个目录。根据你的描述,我猜你只想显示列表中的路径。
你可以使用这里描述的TreePathsTreeModel来实现:如何在jTree中显示Windows注册表?
你只需要将文件路径从字符串转换为TreePath对象即可。


0
首先,对字符串进行排序(在拆分之前)。
如何处理第一行是显而易见的,我不会对此发表评论。在第二行中,搜索已经构建的树并检查节点是否已经存在。在找到一个不存在的节点后,按照第一行所做的过程进行操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接