java SWT,树的操作

/**
* 全选复选,当树下的子节点全部被选中后,父节点选中为true
* @param treeitem
* @param bool
*/
public void checkOrCleanAll(TreeItem treeitem,boolean bool){
TreeItem parentItem = treeitem.getParentItem();//获取所有传入节点的父节点.
if(parentItem != null)
{
TreeItem[] treeItems = parentItem.getItems();//获取所有传入节点的兄弟节点.
boolean booled = true;
for(int i = 0 ; i < treeItems.length ; i ++)
{
TreeItem brotherItem = treeItems[i];
if(brotherItem.getChecked() != bool)//验证兄弟节点是否一样
{
booled =false;
break;
}
}
if (bool && booled)//如果是选中, 并且全部一样, 才会去设置上级节点选中.
{
parentItem.setChecked(bool);
checkOrCleanAll(parentItem,bool);
}
if(!bool)//如果不是选中. 可能取消所有上级节点.
{
parentItem.setChecked(bool);
checkOrCleanAll(parentItem,bool);
}
}
}
/**
* 选中上级节点,此节点下的所有子节点都为true
* 取消选中上级节点,此节点下的所有子节点都为false
* @param parentItem
* @param bool
*/
public void selectOrClean(TreeItem parentItem,boolean bool){
//获取当前节点的所有子节点,
TreeItem[] items = parentItem.getItems();
for(int i = 0;i < items.length; i ++)
{
TreeItem item = items[i];
item.setChecked(bool);
selectOrClean(item, bool);
}
}
public void checkParent(TreeItem parent) {    
       List<Map<String,Object>> checkList = getResultList();
       //如果返回列表为空,表明没有选择数据,退出递归
       if(checkList.size()!=0)
       {
        for(TreeItem child : parent.getItems()) {
        //循环列表
        for(Map<String,Object> childmap:checkList)
        {
        //节点名称与列表名称相同,设置其check为true;
        String name = ""+childmap.get("name");
        //if ( name.equals(parent.getText())) {  
               //1,子节点有一个为【部分选中的】,直接设置父节点为【部分选中的】。  
               //2,子节点不完全相同,说明【部分选中的】。  
        parent.setChecked(true); 
          // }  
        }            
       }
       }else
       {
        return;
       } 
       checkParent(parent.getParentItem());  
   }  
public void checkChildren(TreeItem[] children) {  
   List<Map<String,Object>> checkList = getResultList();
       //如果返回列表为空,表明没有选择数据,退出递归
       if(checkList.size()!=0)
       {
        for(TreeItem child : children) {    
        //循环列表
        for(Map<String,Object> childmap:checkList)
        {
        //节点名称与列表名称相同,设置其check为true;
        String name = ""+childmap.get("name");
        //if ( name.equals(child.getText())) {  
               //1,子节点有一个为【部分选中的】,直接设置父节点为【部分选中的】。  
               //2,子节点不完全相同,说明【部分选中的】。  
        child.setChecked(true);  
         //  } 
         checkChildren(child.getItems());  
        }            
       }
       } 
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值