好的,我对Java很陌生,所以请耐心等待。
我正在使用 Netbeans 6.8 编写一个包含 JTree
组件的小型桌面应用程序,我的要求是能够保存和加载树结构,但该结构允许每个树节点包含三项信息 - 要显示为节点的文本,唯一标识符, 和文件名。
当然,我还需要能够在单击节点时获取所有三位信息。
我已经使用 getModel()
和 XMLDecoder
/encoder
成功保存并加载了树模型,但这当然只保存了默认的树模型。
我已经遵循了几个关于创建自定义树模型的教程,但我发现它们令人困惑,并且我无法将他们告诉我的内容转移到我自己的项目中,因为当然他们通常会一次性创建一个完整的示例应用程序。
假设这样的树模型甚至是可能的,请有人解释如何创建这样的模型,最重要的是,如何将模型放入应用程序中已经存在的JTree
中(以及单击节点时我将如何检索信息 - 我目前可以找到选定的节点并检索其文本)
如果这是不可能的,我很乐意听到任何导致相同功能的替代方法。
已经达成了解决方案,感谢大家的努力,但是正确答案必须首先交给安德鲁发布它!
对于那些感兴趣的人:我使用 Netbeans IDE 创建了一个新的Javabean
对象。一旦我意识到这个对象与普通对象之间的区别,我就设法将一个新创建的Javabean
对象放入树节点中。只是为了让一切都好,我原来的保存方法仍然有效!
谢谢大家的努力。
MVK
要显示为节点、唯一标识符和文件名的文本。
将它们封装在JavaBean Object
中,并使用适当的渲染器。
默认情况下,JTree 使用 DefaultTreeModel,而 DefaultTreeModel 又使用 DefaultMutableTreeNode 来表示每个节点。您可以将任何对象分配给节点,它将通过调用它的 toString() 方法来呈现。
因此,最简单的解决方案是将您需要的所有数据封装在一个类中,并实现 toString() 方法来返回您想要显示的任何内容。作为额外的好处,如果你按照JavaBeans规范实现你的类,你可以免费获得XML序列化。
你真的应该看看 Swing 教程,特别是如何使用树。在阅读如何处理树、列表和表格后,模型、渲染器和 editosr 将更加清晰。