我想在单击 MenuItem 时是否可以禁用自动关闭菜单栏?我有几个类似于复选框的 MenuItem,因此我可以检查多个 MenuItem,并且不希望我的菜单在每次检查时都关闭。
谢谢。
我想在单击 MenuItem 时是否可以禁用自动关闭菜单栏?我有几个类似于复选框的 MenuItem,因此我可以检查多个 MenuItem,并且不希望我的菜单在每次检查时都关闭。
谢谢。
我遇到了同样的问题,我将与您分享我的解决方案:
1) 创建扩展MenuItem 的新类MyMenuItemWithCheckBox。在构造函数中将元素 ID 设置为(例如)menuItemWIthCheckBox + 唯一文本。this.getElement().setId("menuItemWithCheckBox_" + menuItemLabel);
2) 创建扩展MenuBar 的新类MyMenuBar。通过以下方式覆盖 onBrowserEvent 方法:
Override
public void onBrowserEvent(Event event) {
if (DOM.eventGetType(event) == Event.ONCLICK && getSelectedItem().getElement().getId().contains("CheckBox")) {
Scheduler.get().scheduleFinally(new Scheduler.ScheduledCommand() {
@Override
public void execute() {
getSelectedItem().getScheduledCommand().execute();
}
});
event.stopPropagation();
} else {
super.onBrowserEvent(event);
}
}
现在总是调用 MenuItem 的预定命令,但在您的菜单复选框项目的情况下,没有关闭菜单栏。
我希望这对你有所帮助,我花了一天多的时间来创建这个解决方案。:-)
首先,直接这是不可能的,因为显示子菜单的弹出面板在 MenuBar 类中是私有的。
Buuut,有办法做到这一点......
Simpley 从 google 代码库中获取当前的 MenuBar.java 代码,并将其包含在您的 eclipse gwt-project 中。
您不必更改任何东西,例如 package deklaration 或其他东西。只需将您的源代码放入您的项目中,它就会在编译期间简单地替换 gwt-sdk 中的原始 MenuBar 类(也适用于托管开发模式)。
然后您可以简单地将弹出面板的属性 autoHide 设置为 false,并且弹出窗口在单击后不应该消失。
您可以hideOnClick
在 menuItems 上设置为 false
见这里。