首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TreeModel创建

TreeModel创建
EN

Stack Overflow用户
提问于 2013-11-27 18:55:32
回答 1查看 7K关注 0票数 0

关于Java中的树模型,我有一些问题。

在过去13周的课堂上,我们一直在培养一个联系经理。此联系人经理有多种组件:联系人可以是业务联系人,也可以是个人联系人,每个联系人都有自己的事件集。他们也有地址,社交网络和电话号码。

上一次分配时,我们必须从外部txt文件读取信息并在我们的项目中实现它。进展得很好。现在,他想让我们用上述文本中的信息构建一个treeModel,但是我很难理解这个树模型是如何工作的。

例如,根、父、子、节点都是我想要定义的单词,但都非常困难。在这种情况下,我的根会是我的联系人经理,我的父母和孩子是否会像地址之类的?如果有人能帮我理解的话,那会很有帮助的。

如果这份作业能帮助你更好地理解我的问题,这里有一个摘录:

  • 创建扩展ContactManagerFrame的类JFrame。其构造函数将以ContactManager对象(从保存在磁盘上的序列化文件检索)作为参数。
  • 创建和布局所需的图形组件。(提示:使用JPanel对过滤特性的组件进行分组,将JTree添加到JScrollPane,添加组件时使用BorderLayout )
  • Create方法createNodes(),它以对应于树根的DefaultMutableTreeNode (即“联系人”节点)和与用户指定的过滤器对应的字符串作为参数。该方法应该为每个联系人所引用的联系人和对象创建节点,并将它们组织在树结构中,如图1所示。您应该避免创建空父节点(例如,如果联系人没有任何地址,则不应该为该特定联系人添加父节点“地址”)。如果指定的过滤器是空字符串,createNodes()将包括存储在ContactManager对象中的所有联系人。在任何其他情况下,createNodes()都将包括ContactManager中的searchContacts()方法返回的联系人。
  • 从根节点创建DefaultTreeModel对象。使用DefaultTreeModel初始化JTree组件。

我不是让你们中的任何人帮我解决这个问题。我只是很想了解它。非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-27 21:22:22

更复杂的Swing组件(如JTreeJTableJListJComboBox )使用模型的概念。它的意思是:由组件显示的下位数据。它们以这种方式被设计成将数据本身与它们的“可视”表示(即.a)分开。视图)并允许开发人员“或多或少忘记”数据表示。因此,正如在教程中解释的那样,如果您需要添加要显示在这些组件中的一个新的数据对象,您只需将其添加到模型中,视图就会自动更新。

说了这些话之后,您将看到这些组件有一个以模型作为参数的构造函数:

  • JTree(TreeModel newModel)
  • JTable(TableModel dm)
  • JComboBox(ComboBoxModel aModel)
  • JList(ListModel dataModel)

这些模型由接口定义,这些接口建立了任何具体实现都必须满足的基本契约。

特别是在JTree的例子中,我们有一个TreeModel接口和一个默认的实现:DefaultTreeModel。另外,任何TreeModel都必须与节点对象一起工作,而节点对象必须实现TreeNode接口。

因此,要使用JTree,您需要一个TreeModel和一组通过父子关系与TreeNodes相关的TreeNodes。例如,类似这样的事情:

代码语言:javascript
复制
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Contacts"); // root node

DefaultMutableTreeNode contact1 = new DefaultMutableTreeNode("Contact # 1"); // level 1 node
DefaultMutableTreeNode nickName1 = new DefaultMutableTreeNode("drocktapiff"); // level 2 (leaf) node
contact1.add(nickName1); 

DefaultMutableTreeNode contact2 = new DefaultMutableTreeNode("Contact # 2");
DefaultMutableTreeNode nickName2 = new DefaultMutableTreeNode("dic19");        
contact2.add(nickName2);

root.add(contact1);
root.add(contact2);

DefaultTreeModel model = new DefaultTreeModel(root);
JTree tree = new JTree(model);

图片

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20250752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档