读书人

swt tree 联系关系选择监听器

发布时间: 2012-10-18 13:46:55 作者: rapoo

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);}}}

读书人网 >开源软件

热点推荐