1

好的,我对 Java 很陌生,所以请多多包涵。

我正在使用 Netbeans 6.8 编写一个包含JTree组件的小型桌面应用程序,我的要求是我能够保存和加载树结构,但该结构允许每个树节点包含三项信息 - 文本显示为节点、唯一标识符和文件名。

当然,当单击节点时,我还需要能够获取所有三位信息。

我已经使用getModel()and XMLDecoder/成功保存并加载了树模型encoder,但这当然只保存了默认的树模型。

我已经学习了几个关于创建自定义树模型的教程,但我发现它们令人困惑,并且我无法将他们告诉我的内容转移到我自己的项目中,因为当然他们通常会一次性创建一个完整的示例应用程序。

假设像这样的树模型甚至是可能的,请有人解释如何创建这样的模型,最重要的是,如何将模型放入JTree应用程序中已经存在的模型中(以及我将如何检索信息单击节点时-我当前可以找到所选节点并检索其文本)

如果这不可能,我很乐意听到任何导致相同功能的替代方法。

已经找到了一个解决方案,感谢大家的努力,但是正确的答案必须先交给安德鲁才能发布!

对于那些感兴趣的人:我使用 Netbeans IDE 创建了一个新Javabean对象。一旦我意识到这个和普通对象之间的区别,我就设法将一个新创建的Javabean对象放入树节点中。只是为了让一切都好起来,我原来的保存方法仍然有效!

谢谢大家的努力。

MVK

4

2 回答 2

4

要显示为节点的文本、唯一标识符和文件名。

将它们封装在JavaBean Object中并使用适当的渲染器。

于 2012-06-29T14:23:05.273 回答
1

默认情况下,JTree 使用 DefaultTreeModel 反过来使用 DefaultMutableTreeNode 来表示每个节点。您可以将任何对象分配给节点,并且将通过调用它的 toString() 方法来呈现它。

因此,最简单的解决方案是将您需要的所有数据封装在一个类中,并实现 toString() 方法以返回您想要显示的任何内容。作为额外的奖励,如果您按照JavaBeans规范实现您的类,您将免费获得 XML 序列化。

你真的应该看看 Swing 教程,特别是How to use Trees。阅读如何处理树、列表和表格后,模型、渲染器和编辑器会更加清晰。

于 2012-06-29T15:09:29.827 回答