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条)

报告相同问题?

悬赏问题

  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 angular开发过程中,想要读取模型文件,即图1的335行,会报404错误(如图2)。但我的springboot里配置了静态资源文件,如图3。且在该地址下我有模型文件如图4,请问该问题该如何解决呢?
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置