2010-06-09 93 views
2

Hiho,Java Swt treeview彈出菜單

當前我有一個工作的彈出式菜單,當我點擊一個樹形視圖項目時出現。 但我想爲不同的樹形視圖條目顯示不同的彈出窗口。我沒有得到一個知道如何做到這一點?

這裏是我創建的菜單代碼:

MenuManager menuMgr = new MenuManager("#PopupMenu"); 
menuMgr.setRemoveAllWhenShown(true); 
menuMgr.addMenuListener(new IMenuListener() { 
    @Override 
    public void menuAboutToShow(IMenuManager manager) { 
     Action action = new Action() { 
     public void run() { 
       // So something 
     } 
    }; 
    action.setText("Set as working file"); 
    manager.add(action); 
} 

}); 

Menu menu = menuMgr.createContextMenu(getTree()); 
getTree().setMenu(menu); 

回答

0

兩個想法。因爲你需要聽取TreeView上的選擇,因爲這是確定要顯示哪個菜單(或特殊內容)的唯一方法。

然後,您可以在知道使用哪個菜單或將所需項目添加到現有菜單(即在eclipse框架中完成的操作)後,將正確的菜單設置到樹上。

+0

最後一個聽起來不錯,我會嘗試。 – InsertNickHere 2010-06-09 13:32:36

1

你應該propably在樹上用MouseListener

final Tree tree = new Tree(parent, ...); 
tree.addMouseListener(new MouseAdapter() { 
    @override 
    public void mouseDown(MouseEvent me) { 
     if(tree.getSelection() instanceof MySpecificTreeNode) { 
      // create menu... 
     } 
    } 
}); 
+0

我想你的答案也可以,但我更喜歡其他。不能upvote你的,對不起。 – InsertNickHere 2010-06-09 13:33:14

+0

如果代碼是RCP應用程序的一部分,那麼應該將TreeView註冊爲SelectionProvider並在全局範圍內收聽更多 – 2010-06-09 13:34:50