org.eclipse.jface.viewers.TreeViewer
的继承关系是
更多相关参考可见
http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/viewers/TreeViewer.html
在Tree的应用中,尤其是Eclipse RCP的应用,当计算较为耗费资源时我们有时需要在用户点击expend
label(arrow)或者是双击数据节点时处理计算,然后进行展开等操作。
TreeViewer针对节点对象的双击事件给出了比较好的实现,但并没有直接给出针对expend、collapse
labels的事件处理,而给出的addTreeListener(ITreeViewerListener listener)又是处理展开或收缩后的事件。
1 new TreeView().addTreeListener(new ITreeViewerListener(){
2 public void treeCollapsed(TreeExpansionEvent event) {
3 // TODO Auto-generated method stub
4 }
5 public void treeExpanded(TreeExpansionEvent event) {
6 // TODO Auto-generated method stub
7 }
8 });
9
有些网友对于如何解决点击等事件处理问题比较困惑,我最近做的一个项目中也恰好用到单击label后计算并展开、双击节点也做相应的计算并展开(计算后的结果保存提高效率)、根据label得到节点对象。以下贴出相应的主要代码以供参考(原创-版权所有,转载请标明来自http://www.blogjava.net/wqnashqu)。
1 private void hookClickUnitNavigation() {
2 final TreeViewer unitNavigator = this.getTreeViewer();
3
4 unitNavigator.getTree().addListener(SWT.Expand, new Listener() {
5 public void handleEvent(Event event) {
6 (强制转换为放入的数据类型)event.item.getData();
7 if (null != selectedTreeItem) {
8
9 handleDoubleClick(unitNavigator, selectedTreeItem,
10 selectedTreeItem.getAdapter(null));
11 else
12 return;
13 }
14 });
15 }
16 private void hookDoubleClickOnUnitNavigator() {
17 final TreeViewer unitNavigator = this.getTreeViewer();
18 unitNavigator.addDoubleClickListener(new IDoubleClickListener(){
19 public void doubleClick(DoubleClickEvent event) {
20 unitNavigator.getSelection()取得选择的节点
21 相关节点的计算
22 }
23 });
24 }
样例如下
posted on 2008-04-23 00:10
wqwqwqwqwq 阅读(4824)
评论(3) 编辑 收藏 所属分类:
IBM Tech