首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

swt tree 联系关系选择监听器

2012-10-18 
swt tree关联选择监听器该监听需注册到tree对象上??/** * @author hKF76182 zero * */public static class

swt tree 关联选择监听器

该监听需注册到tree对象上

?

?

/** * @author hKF76182 zero * */public static class TreeSelectListener implements SelectionListener{@Overridepublic void widgetSelected(SelectionEvent e) {if(!(e.item instanceof TreeItem)){return;}TreeItem treeItem=(TreeItem) e.item;downLookup(treeItem);upLookup(treeItem);}@Overridepublic void widgetDefaultSelected(SelectionEvent e) {// TODO Auto-generated method stub}private void downLookup(TreeItem treeItem){boolean checked=treeItem.getChecked();TreeItem[] children = treeItem.getItems();for (TreeItem item : children) {item.setChecked(checked);downLookup(item);}}private void upLookup(TreeItem treeItem) {boolean checked = treeItem.getChecked();TreeItem pitem = treeItem.getParentItem();if (checked) {if (pitem != null) {TreeItem[] childrens = pitem.getItems();pitem.setChecked(true);for (TreeItem children : childrens) {System.out.println(children.getText());if(!children.getChecked()){pitem.setChecked(false);break;}}upLookup(pitem);}} else {if (pitem != null) {upLookup(pitem);pitem.setChecked(false);}}}}
/** 带有半选状态的监听 * @author hKF76182 zero * */ public static class TreeSelectListener implements SelectionListener{@Overridepublic void widgetSelected(SelectionEvent e) {if(!(e.item instanceof TreeItem)){return;}TreeItem treeItem=(TreeItem) e.item;downLookup(treeItem);upLookup(treeItem);}@Overridepublic void widgetDefaultSelected(SelectionEvent e) {// TODO Auto-generated method stub}private void downLookup(TreeItem treeItem){boolean checked=treeItem.getChecked();TreeItem[] children = treeItem.getItems();for (TreeItem item : children) {item.setChecked(checked);downLookup(item);}if(checked){treeItem.setGrayed(false);}}private void upLookup(TreeItem treeItem) {TreeItem pitem = treeItem.getParentItem();if (pitem != null) {TreeItem[] childrens = pitem.getItems();boolean hasChildrenChecked = false;boolean hasChildrenNoChecked = false;for (TreeItem children : childrens) {if (children.getChecked()) {hasChildrenChecked = true;if (children.getGrayed()) {hasChildrenNoChecked = true;break;}} else {hasChildrenNoChecked = true;if(hasChildrenChecked){break;}}}pitem.setChecked(hasChildrenChecked);pitem.setGrayed(hasChildrenNoChecked);upLookup(pitem);}}}

热点排行