TreeModel创建

我对Java中的树模型有一些疑问。

在课堂上的最后13周,我们一直在开发一名联系人经理。 此联系人管理器具有各种组件:联系人可以是业务联系人或个人联系人,每个联系人都有自己的一组事件。 他们还有地址,社交网络和电话号码。

最后一项任务我们必须从外部txt文件中读取信息并在我们的项目中实现它。 那很好。 现在他希望我们从所述文本的信息中构建一个treeModel,但是我很难理解这个树模型是如何工作的。

例如,root,parent,children,nodes都是我想要定义但却非常困难的单词。 在这种情况下,我的根将是我的联系人经理,我的父母是联系人,孩子是地址和东西? 如果有人能帮我理解它会真的有帮助。

以下是作业的摘录,如果它可以帮助您更多地理解我的问题:

  • 创建扩展JFrame的类ContactManagerFrame。 它的构造函数将把一个ContactManager对象作为参数(从保存在磁盘上的序列化文件中检索)。

  • 创建和布局所需的图形组件。 (提示:使用JPanel对过滤function的组件进行分组,将JTree添加到JScrollPane,在添加组件时使用BorderLayout)

  • 创建方法createNodes(),该方法将对应于树的根的DefaultMutableTreeNode(即“Contacts”节点)和与用户指定的filter对应的String作为参数。 此方法应为联系人和每个联系人引用的对象创建节点,并在树结构中组织它们,如图1所示。您应该避免创建空父节点(例如,如果联系人没有任何地址,您不应为此特定联系人添加父节点“地址”)。 如果指定的filter是空字符串,则createNodes()将包括存储在ContactManager对象中的所有联系人。 在任何其他情况下,createNodes()将包含ContactManager中方法searchContacts()返回的联系人。

  • 从根节点创建DefaultTreeModel对象。 使用DefaultTreeModel初始化JTree组件。

我不是要求你们任何人为我或任何事情解决它。 我真的很想了解它。 非常感谢你!

更复杂的Swing组件,如JTree , JTable , JList或JComboBox,可以使用模型的概念。 它表示:组件正在显示的下层数据。 它们以这种方式设计,将数据本身与其“可视”表示(也称为视图 )分开,并允许开发人员“忘记”(或多或少)关于数据表示。 因此,如教程中所述,如果您需要添加要在其中一个组件上显示的新数据对象,则只需将其添加到模型中视图将自动更新。

说完之后你会看到这些组件有一个构造函数,它将模型作为参数:

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

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

JTree的案例中,我们有TreeModel接口和默认实现: DefaultTreeModel 。 另外,任何TreeModel都必须使用必须实现TreeNode接口的节点对象。

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

 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); 

图片

在此处输入图像描述