如何获取JTree文件树中的节点以了解它是哪个文件?

时间:2011-11-16 22:24:12

标签: java swing lazy-loading jtree filetree

我使用JTree编写了一个文件树,现在我正在尝试提高它的效率。我正在尝试实现延迟加载,但我不能为我的生活让节点识别它们是为了扩展下一层。我已经尝试让他们根据他们关卡中的文件名列表检查他们的名字,并且由于某些原因不起作用。从长远来看,这无论如何都行不通。我也尝试将文件本身设置为节点内容,但它仍然不会将其识别为文件。

我确定我错过了一些简单的东西,但我不知道它会是什么。我一直在寻找,没有找到任何东西。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

DefaultMutableTreeNode允许您关联任意“用户对象”,在这种情况下可以是它所代表的File。例如:

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

然后,您只需向TreeSelectionListener添加JTree并询问所选的DefaultMutableTreeNode以获取其File,并根据其是否代表目录采取适当的操作或文件。

答案 1 :(得分:1)

而不是使用TreeWillExpandListener实现延迟树加载。只需使用自定义树模型,只需要在必要时检查文件。可以找到执行此操作的现有FileTreeModel的一个很好的示例here