1.创建方式
2.事件
3.事件详情
viewer = new CheckboxTreeViewer(container/*, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER*/);
viewer.setContentProvider(new ViewContentProvider());//实现IStructuredContentProvider,ITreeContentProvider
viewer.setLabelProvider(new ViewLabelProvider());//extends LabelProvider
viewer.setInput(dataList);
2.事件
viewer.getTree().addSelectionListener(new TreeSelectionListener());//extends SelectionAdapter 右键菜单
viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
viewer.addDoubleClickListener(new IDoubleClickListener(){});//双击事件
viewer.addCheckStateListener(new TreeCheckStateListener());//implements ICheckStateListener 父子极联选中
3.事件详情
a.TreeCheckStateListener
Object obj = event.getElement();
if (!(obj instanceof TreeObject)) {
return;
}
TreeObject element = (TreeObject) obj;
boolean check = viewer.getChecked(obj);
switch(element.getLevel()){}
常用方法:viewer.getChecked(Objectxxx)
viewer.expandToLevel(parentElement, 2);
viewer.setChecked(child, check);
b.TreeSelectionListener
TreeItem item = (TreeItem) e.item;
if (item == null) {
return;
}
Object obj = item.getData();
MenuManager menuManager = new MenuManager();
if(!(obj instanceof TreeObject)){
return ;
}
TreeObject treeObj = (TreeObject)obj;
if(2 == treeObj.getLevel()){
menuManager.add(deleteAction);
}else if(1 == treeObj.getLevel()){
menuManager.add(newAction);
menuManager.add(deleteAction);
}else{
return ;
}
Menu menu = menuManager.createContextMenu(viewer.getControl());
viewer.getControl().setMenu(menu);
c.IDoubleClickListener
IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();
if (selection == null){
return null;
}
Object obj = selection.getFirstElement();
TreeObject element = null;
if (obj instanceof TreeObject){
element = (TreeObject)obj;
}
//next open xxx handle
本文详细介绍了 SWT 中 CheckboxTreeViewer 的创建方法及其事件监听的实现过程,包括选择监听、双击监听及检查状态监听等,并展示了如何通过具体方法控制树节点的状态。
2617

被折叠的 条评论
为什么被折叠?



