否決彈出菜單
有時(shí)候,比如說(shuō)在顯示一個(gè)TableViewer的彈出菜單時(shí),可能對(duì)于某些行不希望顯示彈出菜單,而另外的一些行則需要顯示彈出菜單予以操作。今天碰到這個(gè)問(wèn)題,使用了MenuListener來(lái)解決了: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);
}
});
我隱約記得好像是有一個(gè)menuAboutToShow()的方法,但不記得是在哪個(gè)Listener中定義的了。可以在menuAboutToShow()中定義對(duì)MenuItem進(jìn)行動(dòng)態(tài)的添加或者刪除。不知道是不是我記錯(cuò)了,哪位記得有這個(gè)方法的?
MenuListener好像也可以做這個(gè)事情,雖然在其文檔中說(shuō)道,當(dāng)菜單已經(jīng)被顯示時(shí)menuShown()方法被調(diào)用,但是我在實(shí)際操作的時(shí)候,就上面的 例子來(lái)看,菜單并沒(méi)有被顯示出來(lái)就被setVisible(false)了,不知道是不是太快了的緣故。還是應(yīng)該有menuAboutToShow()這 樣的方法才對(duì)。
posted on 2005-09-21 08:48 Living Not Striving 閱讀(1004) 評(píng)論(2) 編輯 收藏 所屬分類: RCP