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。我遇到的问题是我不确定如何以这种方式导航树。

有什么建议和/或替代实施吗?

4

3 回答 3

7

让我们File做解析和维护路径的工作。既然要在a中显示文件JTree,不妨创建一个对应的TreeModel如,这里FileTreeModel引用。因为它实现了 ,所以它可以“被设置为's 模型,然后你就会有一个普通的旧标准。” 您可以使用任何挂载文件系统中的任何作为根,例如:TreeModelJTreeJTreeFile

TreeModel model = new FileTreeModel(new File(System.getProperty("user.dir")));
JTree tree = new JTree(model);

图片

于 2013-02-12T16:31:41.317 回答
1

我不确定 FileTreeModel 是否是最好的方法——它会扫描整个目录。从您写的内容来看,我猜您只想显示列表中的路径。
您可以使用此处描述的 TreePathsTreeModel 来实现它:如何在 jTree 中显示 Windows 注册表?
您只需要将文件路径从字符串转换为 TreePath 对象。

于 2013-04-05T06:47:58.023 回答
0

首先,对字符串进行排序(在拆分之前)。

如何处理第一行是显而易见的,我不会对此发表评论。在第二行中,搜索已构建的树并检查节点是否已存在。找到一个不存在的之后,请按照第一行中的过程进行操作。

于 2013-02-12T11:56:55.130 回答