树组件说明书java_Java设计树组件方法:---利用接口灵活完成树构建实现

这是本人的学习笔记,内容比较简单,没太多铺垫,直接上思路和代码,希望给需要的人一点思路吧。

说明 按照实际业务需求,一般需要把有逻辑关系的三层或者多层对象组织起来,构建一棵树,架构清晰,意图明确,一般用于作为导航栏,菜单列表。

设计思路:假设三个有关系的类  国家,城市,人员

1.数据库设计

国家,城市,人员,下级元素,必须有上级元素的id,parentId

2.定义实体类

普通类基础上,让三个类都实现树节点接口,接口提供树操作常用的方法。比如设置节点名称,节点对象数据,设置节点名称,节点上设置对象(JFace/swt的树有这种功能

,其他的看情况,有的话,会很方便,构架树的时候,每个节点上很方便就获取当前选择的对象,进行类类型判断,就可以转换为对应明确的类实体对象!)。必须有的功能就是设置和获取

下级节点!!

除了最底层节点类不用实现设置下级节点,其他都要实现这个方法,不实现意思是,设置null就可以。

具体参考代码

3.构架树数据准备

第一次查询数据表获取国家数据集合A,遍历A,分别查询城市数据表获取城市数据集,包装下级数据集,为国家对象设置下级节点数据集,第三阶段查询每个城市的人员表

,吧人员数据包装给城市设置下级节点数据集。

4.组件渲染数据集合

树组件有数据解析渲染方法,这些方法的参数一般都是节点接口,可以接受各层节点对象进行解析和渲染。具体参考代码。

分析一下代码1:

public class TreeViewerLableProvider implements ILabelProvider {

// 结点显示的文字。不能返回null值

// 创建几个图像

private Image[] images = new Image[] {

new Image(null, "icons/refresh.gif"),

new Image(null, "icons/star.jpg"),

new Image(null, "icons/moon.jpg") };

public String getText(Object element) {

ITreeEntry entry = (ITreeEntry) element;

return entry.getName();

}

这是JFace treeview组件渲染数据的一个方法。获取到一个节点对象,一定可以转换为节点接口类ITreeEntry ,这时候只是想设置节点名称,不需要知道是那一层节点,所以直接调用接口中的获取名称方法,就获取当前对象共有的获取名称方法。

分析代码2;

public class MyTableLableProvider implements ITableLabelProvider {

public String getColumnText(Object element, int columnIndex) {

ITreeEntry entry = (ITreeEntry) element;

switch (columnIndex) {

case 0:

return entry.getName();

case 1:

List list = entry.getChildren();

if (list == null)

return "";

return String.valueOf(list.size());

case 2:

if (entry instanceof PeopleEntity) {

boolean sex = ((PeopleEntity) entry).isSex();

return sex ? "男" : "女";

}

return "";

default:

return "";

}

}

这是JFace treeview组件渲染数据的另一种情况,因为这时候是table类型,结构稍微复杂点,核心是每个节点需要知道是那种类型,所以只需要判断一些节点独有属性,或者判断是那种类的实体类,或者通过判断当前列序号等已知数据,进行树渲染。

2014年11月28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值