2013-02-12 1 views
3

Я пытаюсь обойти это, поэтому некоторые из вас могут мне помочь. У меня есть список файлов с полными путями (это просто натягивает файлы находятся на другой машине), например:Структура каталогов Java JTree из путей к файлам

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 

Я spliting строку на разделитель, так что я в конечном итоге со списком массивов, таких как:

"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 массива. Проблемы, которые у меня есть, это то, что я не уверен, как перемещаться по дереву таким образом.

Любые предложения и/или альтернативные варианты реализации?

+3

См. Также [GUI графического файла] (http://codereview.stackexchange.com/questions/4446/file-browser-gui). –

ответ

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); 

image

0

Сначала соберите строки (перед их расщеплением).

Как обрабатывать первую строку очевидно, и я не буду комментировать ее. Во второй строке найдите уже построенное дерево и проверьте, существуют ли узлы уже. После того, как вы найдете тот, который не существует, выполните процедуру, выполненную в первой строке.

1

Я не уверен, если FileTreeModel это лучший способ - он сканирует целые каталоги. Из того, что вы написали, я думаю, вы только хотите отображать пути из своего списка.
Вы можете добиться этого, используя описанную здесь TreePathsTreeModel: How I Show Windows Registry in jTree?
Вам просто нужно преобразовать пути файлов из строк в объекты TreePath.

 Смежные вопросы

  • Нет связанных вопросов^_^