您的位置:首页 > 编程语言 > Java开发

Swing 树形控件的使用+递归实现树形分级显示

2012-03-26 20:02 267 查看
Swing 树形控件的使用+递归实现树形分级显示
大家好,我叫许斌,很高兴能看到咱们公司的杂志,我也很喜欢总结自己平时的总结和小知识来和大家一起分享。
今天我们来讲讲Java桌面程序开发中常用的树形控件,所谓树形,其实是一种数据结构,而这种结构的每个元素之间存在着“一对多”的树形关系的数据结构,所以今天我们也在讨论数据关系中的数据结构。
学习过SSH的程序员都会知道Hibernate中对象之间有很多种关系,一对一、一对多、多对多、自身一对多等等,这些并不是我们今天讨论的重点。
看到标题我们会说今天一定是讲的Swing开发。是的,首先我们先来介绍一下树形控件的类:javax.swing.tree.DefaultMutableTreeNode,这个是jdk中自带的类。我们无需附加任何jar包。
这个类有一种很奇怪的现象。就是他可以改变树形而改变树形本身的样子,这在程序中叫做组合关系。是不是不太清楚了。举个例子就明白了,比如说我们的人是由两只手,两只脚等组成的,那么两只手,两只脚等就组合成了人。这就是生活中的组合关系。
好了好了举个例子看看吧!说了这么多.









显示如图:

看到了显示界面是不是感觉没什么。下面我们来设计一个小程序。
从图,我们知道,子节点1是子节点2的子节点,子节点2是根节点的子节点,这里面就有一个从属关系。我们如何设计数据库呢?你现在可以思考一下方案。
经过思考你可能会得到两种方案:
方案一:设计两张表第一张表是所有的父节点,第二张表是所有的父节点的子节点。
方案二:设计一张表在这张表中定义一个外键指向本表的主键。
相比方案一和方案二都有可行之处,各有各的利弊,在这里不再阐述留作思考吧!
数据库设计出来了。





下面讲到这个模块难点的地方了(递归循环):所谓递归:是函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。
如:





int i = 0;
public int add(int a) {
if (a < 100) {
i++;
a++;
this.Abc();
this.add(a);
}
return i ;
}
public void Abc(int i){
System.out.println("我是一个程序员!"+i);
}
此方法是传入一个数字判断这个数字如果小于100则会执行相应次数的Abc()方法。好了介绍了递归相信你会有所收获,那么我们要显示这样一个树形就必须使用这样的方法。一次性从数据库中显示一个你意想不到树形。源代码我已经提供给附件中了,相信对你有所帮助。案例中的数据库是MySql的数据库,如果要改数据库请更改swingframework/Dao/Database.java文件中配置。

附件:http://down.51cto.com/data/2360149
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 编程 休闲 swing
相关文章推荐