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.tkk7.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 (強制轉換為放入的數據類型)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 閱讀(4856)
評論(3) 編輯 收藏 所屬分類:
IBM Tech