org.eclipse.jface.viewers.TreeViewer
的繼承關(guān)系是

更多相關(guān)參考可見
在Tree的應(yīng)用中,尤其是Eclipse RCP的應(yīng)用,當(dāng)計算較為耗費資源時我們有時需要在用戶點擊expend
label(arrow)或者是雙擊數(shù)據(jù)節(jié)點時處理計算,然后進行展開等操作。
TreeViewer針對節(jié)點對象的雙擊事件給出了比較好的實現(xiàn),但并沒有直接給出針對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
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
有些網(wǎng)友對于如何解決點擊等事件處理問題比較困惑,我最近做的一個項目中也恰好用到單擊label后計算并展開、雙擊節(jié)點也做相應(yīng)的計算并展開(計算后的結(jié)果保存提高效率)、根據(jù)label得到節(jié)點對象。以下貼出相應(yīng)的主要代碼以供參考(原創(chuàng)-版權(quán)所有,轉(zhuǎn)載請標明來自http://www.aygfsteel.com/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 (強制轉(zhuǎn)換為放入的數(shù)據(jù)類型)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()取得選擇的節(jié)點
21 相關(guān)節(jié)點的計算
22 }
23 });
24 }
樣例如下2 final TreeViewer unitNavigator = this.getTreeViewer();
3
4 unitNavigator.getTree().addListener(SWT.Expand, new Listener() {
5 public void handleEvent(Event event) {
6 (強制轉(zhuǎn)換為放入的數(shù)據(jù)類型)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()取得選擇的節(jié)點
21 相關(guān)節(jié)點的計算
22 }
23 });
24 }