org.eclipse.jface.viewers.TreeViewer
的繼承關(guān)系是
更多相關(guān)參考可見
http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/viewers/TreeViewer.html
在Tree的應(yīng)用中,尤其是Eclipse RCP的應(yīng)用,當(dāng)計(jì)算較為耗費(fèi)資源時(shí)我們有時(shí)需要在用戶點(diǎn)擊expend
label(arrow)
或者是雙擊數(shù)據(jù)節(jié)點(diǎn)時(shí)處理計(jì)算,然后進(jìn)行展開等操作。
TreeViewer針對(duì)節(jié)點(diǎn)對(duì)象的雙擊事件給出了比較好的實(shí)現(xiàn),但并沒有直接給出針對(duì)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
有些網(wǎng)友對(duì)于如何解決點(diǎn)擊等事件處理問題比較困惑,我最近做的一個(gè)項(xiàng)目中也恰好用到單擊label后計(jì)算并展開、雙擊節(jié)點(diǎn)也做相應(yīng)的計(jì)算并展開(計(jì)算后的結(jié)果保存提高效率)、根據(jù)label得到節(jié)點(diǎn)對(duì)象。以下貼出相應(yīng)的主要代碼以供參考(原創(chuàng)-版權(quán)所有,轉(zhuǎn)載請(qǐng)標(biāo)明來(lái)自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 (強(qiáng)制轉(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é)點(diǎn)
21 相關(guān)節(jié)點(diǎn)的計(jì)算
22 }
23 });
24 }
樣例如下
posted on 2008-04-23 00:10
wqwqwqwqwq 閱讀(4856)
評(píng)論(3) 編輯 收藏 所屬分類:
IBM Tech