我使用 JTree 编写了一个文件树,现在我正在尝试使其更高效。我正在尝试实现延迟加载,但我无法让节点识别它们是哪个文件以扩展下一层。我试过让他们根据他们级别的文件名列表检查他们的名字,但由于某种原因这不起作用。从长远来看,这无论如何都行不通。我也尝试将文件本身设置为节点内容,但它仍然无法将其识别为文件。
我确定我错过了一些简单的东西,但我不知道它会是什么。我一直在四处寻找,并没有找到任何东西。谁能帮我解决这个问题?
我使用 JTree 编写了一个文件树,现在我正在尝试使其更高效。我正在尝试实现延迟加载,但我无法让节点识别它们是哪个文件以扩展下一层。我试过让他们根据他们级别的文件名列表检查他们的名字,但由于某种原因这不起作用。从长远来看,这无论如何都行不通。我也尝试将文件本身设置为节点内容,但它仍然无法将其识别为文件。
我确定我错过了一些简单的东西,但我不知道它会是什么。我一直在四处寻找,并没有找到任何东西。谁能帮我解决这个问题?
DefaultMutableTreeNode
允许您关联任意“用户对象”,在这种情况下,它可能是File
它所代表的。例如:
File file = new File("data.txt");
DefaultMutableTreeNode node = new DefaultMutableTreeNode(file);
然后,您只需将 a 添加TreeSelectionListener
到JTree
并询问所选内容DefaultMutableTreeNode
以获取其File
并根据它是代表目录还是文件采取适当的措施。
而不是使用 TreeWillExpandListener 实现延迟树加载。只需使用自定义树模型,只在必要时检查文件。可以在此处找到执行此操作的现有 FileTreeModel 的一个很好的示例