簡體   English   中英

來自文件路徑的 Java JTree 目錄結構

[英]Java JTree directory structure from file paths

我一直在努力解決這個問題,所以也許你們中的一些人可以幫助我。 我有一個帶有完整路徑的文件列表(這些只是文件在另一台機器上的字符串),例如:

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。 我遇到的問題是我不確定如何以這種方式導航樹。

任何建議和/或替代實現?

File做解析和維護路徑的工作。 由於您希望在JTree顯示文件,您不妨創建一個相應的TreeModel例如FileTreeModel此處引用。 因為它實現了TreeModel ,所以它可以“被設置為JTree的模型,然后你就會擁有一個普通的舊標准JTree 你可以使用任何File在任何安裝的文件系統的根目錄,例如:

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

圖像

我不確定 FileTreeModel 是否是最好的方法 - 它掃描整個目錄。 從你寫的內容來看,我猜你只想顯示列表中的路徑。
您可以使用此處描述的 TreePathsTreeModel 來實現它: How I Show Windows Registry in jTree?
您只需要將文件路徑從字符串轉換為 TreePath 對象。

首先,對字符串進行排序(在拆分它們之前)。

如何處理第一行很明顯,我不會對此發表評論。 在第二行,搜索已經構建的樹並檢查節點是否已經存在。 找到不存在的一個后,按照第一行中完成的過程進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM