weixin_42500756 2012-08-07 17:55
浏览 345
已采纳

swt 生成树[读取Mysql数据库中的父子关系表]

数据库中的表结构:

id pid

1 0

2 1

3 1

4 2

6 2

5 4

需要生成这样一个树结构,选取combo,需要查看哪个根节点。此时我选取的是combo中的0,所以显示如下。但是这是我手动添加的,界面如下:

1.通过get_count()方法,把所有Pid加载到combo里面;

2.选取某个数字作为查看时的父节点,触发cre_tree()生成一个tree

3.tree的内容通过get_list()方法得到,并存放在List> tree_list中,tree_list的内容就为:

[1, 2, 4, 5]

[1, 2, 6, null]

[1, 3, null, null]

现在手动添加的代码是死的:

Tree tree = new Tree(shell, SWT.BORDER);

tree.setBounds(30, 36, 382, 201);

List> tree_list = new ArrayList>(GetList.get_list(st));

TreeItem temp = new TreeItem(tree,SWT.NONE);

temp.setText(st);

TreeItem temp_1 = new TreeItem(temp,SWT.NONE);

temp_1.setText(tree_list.get(0).get(0));

TreeItem temp_2 = new TreeItem(temp_1,SWT.NONE);

temp_2.setText(tree_list.get(0).get(1));

TreeItem temp_3 = new TreeItem(temp_2,SWT.NONE);

temp_3.setText(tree_list.get(0).get(2));

。。。。。。

#################################################

请教大家如何将这种结构的内容添加到tree中,谢谢!

  • 写回答

2条回答 默认 最新

  • Dead_Knight 2012-08-08 13:06
    关注

    我这边没有swt的开发环境,大体看了下代码,主要问题是cre_tree方法。这个方法很乱,而且list中的数据也混乱,根本不需要嵌套list,sql也混乱,需要这么多的left join么?只是根据pid获取所有父节点为pid的数据,一条sql不就行了么?

    你的需求也没描述清楚,是combo选择0,只出现父节点为0的所有树节点呢?还是选择0,只展开父节点为0的子节点呢?
    建议如下:
    一、如果每次选择combo重新查询:
    1.调整sql,根据pid获取所有父节点为pid的数据
    2.重新定义list,list只保存1查询出来的数据
    3.根据list循环构造treeitem

    二、如果combo仅仅是控制展开的功能:
    1.调整sql,一条sql语句查询所有数据
    2.重新定义list,list只保存1查询出来的数据
    3.根据list递归构造treeitem

    实际上,你根本没用递归的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题