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"

一度にインデックスを追加したいのですが、値がそのレベルに既に存在する場合は、次のインデックスにスキップします。つまり、最初の配列を追加し、次に 2 番目の配列で、ツリーのレベル 0 に移動します。すでに「C:」が存在するため、ツリーのレベル 1 と配列のインデックス 1 に移動します。私が抱えている問題は、そのような方法でツリーをナビゲートする方法がわからないことです。

提案や代替の実装はありますか?

4

3 に答える 3

7

パスFileの解析と維持の作業を行います。ファイルを で表示したい場合は、ここで引用されているなどJTreeの対応するファイルを作成することもできます。を実装しているため、「 のモデルとして設定すれば、昔ながらの標準的な. マウントされた任意のファイル システムの any をルートとして使用できます。次に例を示します。TreeModelFileTreeModelTreeModelJTreeJTreeFile

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

画像

于 2013-02-12T16:31:41.317 に答える
1

FileTreeModel が最善の方法であるかどうかはわかりません。ディレクトリ全体をスキャンします。あなたが書いたことから、リストからパスを表示したいだけだと思います。
ここで説明されている TreePathsTreeModel を使用してそれを実現できます: How I Show Windows Registry in jTree?
ファイルパスを文字列から TreePath オブジェクトに変換するだけです。

于 2013-04-05T06:47:58.023 に答える
0

まず、文字列を並べ替えます (分割する前に)。

最初の行を処理する方法は明らかであり、それについてはコメントしません。2 行目で、既に構築されているツリーを検索し、ノードが既に存在するかどうかを確認します。存在しないものを見つけたら、最初の行で行われた手順に従います。

于 2013-02-12T11:56:55.130 に答える