我一直试图解决这个问题,所以也许你们中的一些人可以帮助我。我有一个文件列表及其完整路径(这些只是文件在另一台机器上的字符串),例如:
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。我遇到的问题是我不知道如何以这种方式导航树。
任何建议和/或替代实施?
答案 0 :(得分:6)
让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 :(得分:1)
我不确定FileTreeModel是否是最佳方式 - 它会扫描整个目录。根据你的写作,我想你只想显示你的列表中的路径。
您可以使用此处描述的TreePathsTreeModel来实现它:How I Show Windows Registry in jTree?
您只需将文件路径从字符串转换为TreePath对象。
答案 2 :(得分:0)
首先,对字符串进行排序(在拆分之前)。
如何处理第一行显而易见,我不会对此发表评论。在第二行中,搜索已构建的树并检查节点是否已存在。找到不存在的文件后,请按照第一行中的步骤进行操作。