文件路径中的Java JTree目录结构

问题描述 投票:3回答:4

我一直在努力解决这个问题,所以也许有些人可以帮助我。我有一个带有完整路径的文件列表(这些只是文件在另一台机器上的字符串),例如:

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

有任何建议和/或替代实施方式?

java swing directory jtree filepath
4个回答
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);

“


1
投票

我不确定FileTreeModel是否是最佳方法-它会扫描整个目录。从您写的内容来看,我想您只想显示列表中的路径。您可以通过使用此处描述的TreePathsTreeModel来实现它:How I Show Windows Registry in jTree?您只需要将文件路径从字符串转换为TreePath对象。


0
投票

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

如何处理第一行很明显,我不会对此发表评论。在第二行中,搜索已构建的树并检查节点是否已存在。找到不存在的内容后,请按照第一行中的步骤进行操作。


0
投票

如果需要递归列出目录,甚至需要进行复制,粘贴(管理文件)之类的操作,则>]

我为此目的创建了一个项目,您可以在github上查看代码:https://github.com/ricardojlrufino/JExplorerTree

功能

-延迟加载(仅在扩展时)-没有额外的依赖关系(扩展JPanel并使用JTree)-外部拖放(往返操作系统)-内部拖放(在树内)-键盘支持:F2,DELETE,ENTER-CTRL + C,CTRL + V,CTRL + X(内部)-CTRL + V(来自外部文件)-CTRL + C(允许将JTree形式复制到外部)-应对外部变化(灰显)-本机图标支持-基本操作

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.