我创建了一个带有子菜单的上下文菜单栏.我使用 for 循环生成了子菜单从 list.so 当我按下任何一个子菜单项时,生成的子菜单项,我应该得到子菜单项的文本 pressed.so 我们如何做到这一点。我在子菜单中只有一个运行方法,但每个子菜单项执行不同的 functionality.so 一个运行方法如何处理不同的功能。
例如
main menu->submenu1
->submenu2
->submenu3
因此,如果我按子菜单 2,我应该按下子菜单项的字符串,并且应该调用相应的方法,因为它只有一个运行方法
生成上下文菜单的代码如下
MenuManager contextMenu = new MenuManager("#ViewerMenu"); //$NON-NLS-1$
contextMenu.setRemoveAllWhenShown(true);
contextMenu.addMenuListener(new IMenuListener() {
@Override
public void menuAboutToShow(IMenuManager mgr) {
fillContextMenu(mgr);
// IMenuManager submenu = new MenuManager("Sub menu title");
// submenu.add(someaction);
}
});
protected void fillContextMenu(final IMenuManager contextMenu) {
IMenuManager submenu = new MenuManager("Add Case");
List<String> testCases = new ArrayList<>();
testCases.addAll(TestCases.testCaseNames);
for (String item : testCases)
{
System.out.println("item is"+item);
submenu.add(new Action(item) {
@Override
public void run()
{
// implement this
}
});
}
contextMenu.add(submenu);
}
那么这怎么能做到呢
Action
的getText()
方法返回菜单文本。
所以:
submenu.add(new Action(item) {
@Override
public void run()
{
String itemText = getText();
...
}