Java 选择Action.AS\u复选框时,如何保持菜单管理器打开以允许多个选择
我有一个上下文菜单,其中有一个称为子菜单的子菜单,其中包括一些项目,每个项目都是一个动作 我想做的是让用户能够选择多个项目,而不必重新打开菜单和子菜单,直到他点击离开 类似的问题已经解决,但我不知道如何保持子菜单也打开 给你 此代码保持第一个菜单打开,但子菜单不打开 非常感谢您的帮助:)Java 选择Action.AS\u复选框时,如何保持菜单管理器打开以允许多个选择,java,swt,jface,Java,Swt,Jface,我有一个上下文菜单,其中有一个称为子菜单的子菜单,其中包括一些项目,每个项目都是一个动作 我想做的是让用户能够选择多个项目,而不必重新打开菜单和子菜单,直到他点击离开 类似的问题已经解决,但我不知道如何保持子菜单也打开 给你 此代码保持第一个菜单打开,但子菜单不打开 非常感谢您的帮助:) public void test() { final TableViewer tableViewer = new TableViewer(PlatformUI.getWorkbench().getAct
public void test() {
final TableViewer tableViewer = new TableViewer(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
MenuManager menuMgr = new MenuManager("#PopupMenu");
menuMgr.setRemoveAllWhenShown(false);
final Menu menu = menuMgr.createContextMenu(tableViewer.getControl());
tableViewer.getControl().setMenu(menu);
menuMgr.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
manager.add(new Separator("Actions")); // Where manager is a IMenuManager which is passed as a parameter of menuAboutToShow of addMenuListener
final MenuManager submenu = new MenuManager("Show actions");
manager.add(submenu);
for (final TableColumn tc : tableViewer.getTable().getColumns()) {
Action action = new Action(tc.getToolTipText(), Action.AS_CHECK_BOX) {
@Override
public boolean isEnabled() {
return true;
}
@Override
public boolean isChecked() {
return tc.getWidth() != 0;
}
@Override
public void run() {
if (mainMenuPoint == null)
return;
Display.getDefault().asyncExec(new Runnable() {
public void run() {
menu.setLocation(mainMenuPoint);
menu.setVisible(true);
Display.getDefault().asyncExec(new Runnable() {
public void run() {
submenu.setVisible(true);
}
});
}
});
}
};
submenu.add(action);
}
}
});
}