每个JTree节点存储和使用多个值

时间:2012-06-29 14:17:10

标签: java swing jtree netbeans6.8 treemodel

好的,我对Java很新,所以请耐心等待。

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

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

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

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

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

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

已经达成了一个解决方案,感谢大家的努力,但是正确的答案必须安德鲁先发布!

对于那些感兴趣的人: 我使用Netbeans IDE创建了一个新的Javabean对象。一旦我意识到这和普通对象之间的区别,我设法将新创建的Javabean对象放入树节点。为了使一切顺利,我原来的保存方法仍然可以正常工作!

感谢大家的努力。

MVK

2 个答案:

答案 0 :(得分:4)

  

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

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

答案 1 :(得分:1)

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

因此,最简单的解决方案是在类中封装所需的所有数据,并实现toString()方法以返回您想要显示的内容。另外,如果您按照JavaBeans规范实施课程,则可以免费获得XML序列化。

你真的应该看一下Swing教程,特别是How to use Trees。在阅读了如何处理树,列表和表格后,模型,渲染器和editosr将更加清晰。