否決彈出菜單
有時候,比如說在顯示一個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 閱讀(1003) 評論(2) 編輯 收藏 所屬分類: RCP