Как я могу получить узел в дереве файлов JTree, чтобы узнать, какой это файл? - PullRequest
1 голос
/ 17 ноября 2011

Я написал дерево файлов, используя JTree, и сейчас я пытаюсь сделать его более эффективным.Я пытаюсь реализовать ленивую загрузку, но я не могу на всю жизнь заставить узлы распознать, какой файл они используют, чтобы расширить следующий слой.Я пытался заставить их проверить свое имя по списку имен файлов на их уровне, и по какой-то причине это не работает.Это не сработает в любом случае в долгосрочной перспективе.Я также попытался установить сам файл в качестве содержимого узла, но он все равно не распознает его как файл.

Я уверен, что упускаю что-то простое, но я не знаю, что этобыло бы.Я искал вокруг, и ничего не нашел.Может ли кто-нибудь помочь мне понять это?

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Вместо реализации отложенной загрузки дерева с TreeWillExpandListener.Просто используйте пользовательскую модель дерева, которая проверяет файлы только при необходимости.Хороший пример существующей FileTreeModel, которая делает это, можно найти здесь

1 голос
/ 17 ноября 2011

DefaultMutableTreeNode позволяет связать произвольный «пользовательский объект», который в этом случае может быть File, который он представляет.Например:

File file = new File("data.txt");
DefaultMutableTreeNode node = new DefaultMutableTreeNode(file);

Затем вам просто нужно добавить TreeSelectionListener к JTree и опросить выбранного DefaultMutableTreeNode, чтобы получить его File, и предпринять соответствующие действия в зависимости от того, представляет ли онкаталог или файл.

...