SWT JFACE .TreeViewer Expand事件及其节点处理方法

SWT JFACE .TreeViewer Expand事件及其节点处理方法

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 labelarrow或者是双击数据节点时处理计算,然后进行展开等操作。

TreeViewer针对节点对象的双击事件给出了比较好的实现,但并没有直接给出针对expendcollapse 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  }
样例如下


你可能感兴趣的:(SWT JFACE .TreeViewer Expand事件及其节点处理方法)