假设你的结果集是个Date[],其中Date类定义如下:
class Date {
String typeid; String parentid; String name;
}
那么根据表1造树如下: HashMap nodemap = new HashMap();
DefaultMutableTreeNode root = new DefaultMutableTreeNode(); public void buildTree() {
Date[] dates = getResult();//获得结果集
nodemap.clear();
root.removeAllChildren();
for (int i = 0; i < dates.length; i++)
{
DefaultMutableTreeNode node = getNode(dates[i].typeid);
if (node.getUserObject() == null)
node.setUserObject(dates[i]);
DefaultMutableTreeNode parentnode = getNode(dates[i].parentid);
parentnode.add(node);
}
JTree tree = new JTree(root);//这就是结果了
} public DefaultMutableTreeNode getNode(String typeid) {
if (typeid == null)
return null;
if(typeid.equals("0"))
return root;
DefaultMutableTreeNode node = (DefaultMutableTreeNode) nodemap.get(typeid);
if (node == null)
{
node = new DefaultMutableTreeNode();
nodemap.put(typeid, node);
}
return node;
}
基本就是这样,其他的显示什么的你调整DefaultMutableTreeNode里的属性就好了,表2就不用我写了吧,同样道理
class Date {
String typeid; String parentid; String name;
}
那么根据表1造树如下: HashMap nodemap = new HashMap();
DefaultMutableTreeNode root = new DefaultMutableTreeNode(); public void buildTree() {
Date[] dates = getResult();//获得结果集
nodemap.clear();
root.removeAllChildren();
for (int i = 0; i < dates.length; i++)
{
DefaultMutableTreeNode node = getNode(dates[i].typeid);
if (node.getUserObject() == null)
node.setUserObject(dates[i]);
DefaultMutableTreeNode parentnode = getNode(dates[i].parentid);
parentnode.add(node);
}
JTree tree = new JTree(root);//这就是结果了
} public DefaultMutableTreeNode getNode(String typeid) {
if (typeid == null)
return null;
if(typeid.equals("0"))
return root;
DefaultMutableTreeNode node = (DefaultMutableTreeNode) nodemap.get(typeid);
if (node == null)
{
node = new DefaultMutableTreeNode();
nodemap.put(typeid, node);
}
return node;
}
基本就是这样,其他的显示什么的你调整DefaultMutableTreeNode里的属性就好了,表2就不用我写了吧,同样道理
class Date2 {
String contentid; String typeid; String name;
......
}
那么你在造树的时候只要加个for循环就搞定了啊
public void buildTree() {
Date[] dates = getResult();//获得结果集
Date2[] date2s = getResult();//获得2结果集
nodemap.clear();
root.removeAllChildren();
for (int i = 0; i < dates.length; i++)
{
DefaultMutableTreeNode node = getNode(dates[i].typeid);
if (node.getUserObject() == null)
node.setUserObject(dates[i]);
DefaultMutableTreeNode parentnode = getNode(dates[i].parentid);
parentnode.add(node);
} //只要加这个循环就好了,连代码都是copy上个循环的
for (int i = 0; i < date2s.length; i++)
{
DefaultMutableTreeNode node = getNode(date2s[i].contentid);
if (node.getUserObject() == null)
node.setUserObject(date2s[i]);
DefaultMutableTreeNode parentnode = getNode(date2s[i].typeid);
parentnode.add(node);
}
JTree tree = new JTree(root);//这就是结果了
}晕死,果然现在的新人都是只动嘴不动脑的,原理完全一样的
还有,为了在树上显示你要的编码或名称,请覆盖Data和Data2类的toString()方法,返回你要的东西,还是先说给你吧,免得树造出来你不认识又郁闷我
例如你只要名称
class Date {
public String toString(){
return name;
}
}
编码+名称
class Date {
public String toString(){
return typeid+" "+name;
}
}私下里猜shenyinhong(小草)你一定是MM,因为不动脑子是MM的特权
对不起啊,可能说的重了点,别在意啊其实我觉得你一开始的目标就错了,你不应该找根据数据库建树的例子,你应该找个建树的例子,跟数据库不相干的,只要搞通JTree,不用管你数据是在数据库还是文件还是别的来源。关于JTree的用法,随便一本关于swing的书都有。