树状结构
显示父类但不显示类,当点击某一父类时才显示相应子类
此时要求在代码中动态手动的创建树的项即项的项
- 在Tree显示顶级父类——打开此窗口就需要显示
/**
* 在Tree显示顶级父类——打开此窗口就需要显示
* @param tree
*/
private void showParentType(Tree tree){
try {
//顶级父类型,显示大类型 parent=0 --》数据库中的表记录
List<Map<String,Object>> types=dao.findByParent("0");//返回查询到的所有父类
TreeItem item=null;
//可做一个空的判断
for(Map<String,Object> m:types){
//在Tree中创建一个新顶级父项
item=new TreeItem(tree,SWT.NONE);
//设置树项目的名称
item.setText(String.valueOf(m.get("T_NAME")));//将对象转成字符串
//需要根据顶级编号查询其下面的子类——将id存储在父项中
item.setData("T_PARENT",m.get("T_ID"));//以键值的方式存储
}
} catch (Exception e) {
e.printStackTrace();
}
}
- 在父项中显示子项——点击父项时显示,所以需要添加在树的点击事件中
添加点击事件
获取点击的顶级父类
TreeItem item=(TreeItem)e.item;
/**
* 显示子——点击父项时显示,所以需要添加在树的点击事件中()
* @param item
*/
private void showSonType(TreeItem item){
//记录下父编号为了查询显示其子项
String parent=String.valueOf(item.getData("T_PARENT"));
try {
//list返回根据父类查询到的子类
List<Map<String,Object>> list=dao.findByParent(parent);
if(null==list||list.isEmpty()){
return ;
}
//清空当前项下的所有子项——每次都是重复的查询
//TODO removeALL是怎么添加到子类下面去的
item.removeAll();
TreeItem treeItem=null;
for(Map<String,Object> m:list){
//放在当前选中的item下面
treeItem =new TreeItem(item,SWT.NONE);
treeItem.setText(String.valueOf(m.get("T_NAME")));
//将id存储
treeItem.setData("T_PARENT",m.get("T_ID"));
}
} catch (Exception e1) {
e1.printStackTrace();
}
}