2

我想在单击 MenuItem 时是否可以禁用自动关闭菜单栏?我有几个类似于复选框的 MenuItem,因此我可以检查多个 MenuItem,并且不希望我的菜单在每次检查时都关闭。

谢谢。

4

3 回答 3

0

我遇到了同样的问题,我将与您分享我的解决方案:

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 的预定命令,但在您的菜单复选框项目的情况下,没有关闭菜单栏。

我希望这对你有所帮助,我花了一天多的时间来创建这个解决方案。:-)

于 2018-12-21T08:10:19.340 回答
-1

首先,直接这是不可能的,因为显示子菜单的弹出面板在 MenuBar 类中是私有的。

Buuut,有办法做到这一点......

Simpley 从 google 代码库中获取当前的 MenuBar.java 代码,并将其包含在您的 eclipse gwt-project 中。

您不必更改任何东西,例如 package deklaration 或其他东西。只需将您的源代码放入您的项目中,它就会在编译期间简单地替换 gwt-sdk 中的原始 MenuBar 类(也适用于托管开发模式)。

然后您可以简单地将弹出面板的属性 autoHide 设置为 false,并且弹出窗口在单击后不应该消失。

于 2011-08-03T08:07:13.500 回答
-1

您可以hideOnClick在 menuItems 上设置为 false

这里

于 2012-08-30T16:56:28.610 回答