eclipshine

Eclipse主题站

否决弹出菜单

有时候,比如说在显示一个TableViewer的弹出菜单时,可能对于某些行不希望显示弹出菜单,而另外的一些行则需要显示弹出菜单予以操作。今天碰到这个问题,使用了MenuListener来解决了:
    menu.addMenuListener(new MenuAdapter() {
        public void menuShown(MenuEvent e) {
            ISelection selection = tableTreeViewer.getSelection();
            IStructuredSelection ss = (IStructuredSelection) selection;
            Object firstElement = ss.getFirstElement();
            if (firstElement instanceof IAttributeCatagory)
                menu.setVisible(false);
        }
    });
我隐约记得好像是有一个menuAboutToShow()的方法,但不记得是在哪个Listener中定义的了。可以在menuAboutToShow()中定义对MenuItem进行动态的添加或者删除。不知道是不是我记错了,哪位记得有这个方法的?
MenuListener好像也可以做这个事情,虽然在其文档中说道,当菜单已经被显示时menuShown()方法被调用,但是我在实际操作的时候,就上面的 例子来看,菜单并没有被显示出来就被setVisible(false)了,不知道是不是太快了的缘故。还是应该有menuAboutToShow()这 样的方法才对。

posted on 2005-09-21 08:48 Living Not Striving 阅读(982) 评论(2)  编辑  收藏 所属分类: RCP

评论

# re: 否决弹出菜单 2006-04-21 09:52 fph

IMenuListener中有哪个方法  回复  更多评论   

# re: 否决弹出菜单 2006-11-19 19:18 Jet Geng

IMenuListener 中定义了该接口。
使用的时候把实现了IMenuListener 接口的类作为参数传入MenuManager.addMenuListener()方法中就可以了。也很好用。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问