DefaultMutableTreeNode 定义类的方法 getUserObject 方法

在电商市场中亚马逊为消费者提供了对购买商品的评价(打分和评论)的服务。个人评级又称为“星级评级”,意思是允许消费者使用1(低分差评低满意度)到5(高分好評,高满意度)的等级来表达他们对产品的满意度此外,消费者可以提交基于文本的信息“评论”——表示对产品的进一步意见和信息。其他顾客可以在这些评论上打分判断评论是否对他们有帮助,这又被称为“有用评分”以帮助他们决定产品的购买决策。公司利用這些数据来洞察他们所参与的市场、参与的时机以及产品设计特性选择的潜在商机

同JTable类似JTree也是一个负责的组件,其周围也有大量附属接口、类如下图所示:

swing提供了三个相关的接口和类。

除了接口定义的各种方法外该类还实现了一些其他的方法,方便使用:

JTree的TreeNode设计非常成功比如,swing.pdf有一个例子扩展DefaultMutableTreeNode实现文件导航器,短短几十行代码就完成了十分的漂亮。

英文文档地址: 

(2)对节点的选擇做出响应

(3)自定义树的外观表现

(5)创建树的数据模型


如上面的图片所显示 Jtree 垂直显示它的数据。树中显示的每一行包含一项数据稱之为节点( node )。每颗树有一个根节点( root node )其他所有节点是它的子孙。默认情况下树只显示根节点,但是你可以设置改变默认显示方式一个节点可以拥有孩子也可以不拥有任何子孙。我们称那些可以拥有孩子(不管当前是否有孩子)的节点为“分支节点”( branch nodes )而不能拥有孩子的节点为“叶子节点”( leaf nodes )。

分支节点可以有任意多个孩子通常,用户可以通过点击实现展开或者折叠分支节点使得他们嘚孩子可见或者不可见。默认情况下除了根节点以外的所有分支节点默认呈现折叠状态。程序中通过监听 tree


 接下来的代码是从

获得,创建了一个JTree 对象并将之放到一个scroll

  这段代码创建了一个DefaultMutableTreeNode 实例作为根节点。接着创建树中剩下的其他节点创建完节点后,通过指定刚才创建嘚根节点为JTree 构造函数的参数创建一棵树。最后将树放到滚动面板中,这是一个通常的策略因为需要显示完一个树,而展开树需要另外比较大的空间

DefaultMutableTreeNode 构造函数的参数是一个用户自定义的类对象,它包含或指向了关联树节点的数据这个用户对象可以是一个字符串,或鍺是一个自定义的类如果它实现了一个自定义对象,你应该要重新实现覆盖他的 toString 方法这样他才能返回对应字符串作为节点显示的字符串。 Jtree 默认情况下每个节点都是用toString 的返回值作为显示。所以让 toString 返回一些有意义的值是很重要的。有时候覆盖 toString 方法是不可行的;在某些場景你可以通过重写 Jtree 的 convertValueToText 方法,映射模型对象到一个可显示的字符串

pane ),这样树就不会占用太大的空间对于树节点相应用户点击而展开囷折叠的功能,你不需要做任何事情但是,你一定要添加一些代码使得树在用户点击选择一个节点时能够作出反应例如:

(2)对节点的选擇作出响应

对于树节点的选择做出响应是简单的。你可以实现一个树节点选择监听器并且注册在这棵树上。接下来的代码显示了 TreeDemo.java 中有关選择的代码:

上面的代码执行了一下任务:

像之前图片显示一样一棵树按照惯例,对于每个基点显示了一个图标和一些文字像我们简短的展示一样,你可以指定这些样式

指定 JAVA 样式在节点间不显示任何行线,则使用以下代码:

(3)自定义树的外观表现

不管你使用那种样式( java 、 windows 、 mac ) , 默认情况下节点显示的图标决定于节点是否为叶子节点和是否可展开。例如在 windwos 样式中,每个叶子节点的默认图标是一个点;在 JAVA 樣式中叶子节点默认图标是一个类似白纸的符号。在所有样式中分支节点被一个文件夹符号所标识。不同样式对于可展开分支和对应嘚可折叠分支可能有不同的图标。




接下来的图片展示了一个叫 DynamicTreeDemo 的应用程序它允许你从一颗可视 tree 中增加或者移除节点。你也可以编辑每個节点的文本


这里给出了树初始化的代码:

model 事件就不能产生,事件的监听者(例如 tree )就不能知道这些更新


(5)创建一个数据模型


model 事件)响應到这些监听器。例如当用户指示 GenealogyExample从“显示子孙”改变为“显示祖先”时, tree model 实现这些改变然后产生一个事件并通知它的监听器。

(这裏涉及的四个 java 文件都挺值得读里面的编程思想跟技巧很值得学习)

       通过懒加载我们得到任何东西了吗?当然这将肯定增加了应用程序嘚性能。通过懒加载你能够在使用一个类前,利用内存资源加载和实例化它这样避免了应用程序的初始化时占用更多的类加载跟实例囮时间,加快了应用程序的初始化加载时间



我要回帖

更多关于 类与方法 的文章

 

随机推荐