GWT,单击MenuItem时禁用自动关闭MenuBar?

时间:2011-07-08 08:51:20

标签: gwt menuitem menubar auto-close

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

感谢。

3 个答案:

答案 0 :(得分:0)

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

1)创建扩展菜单项的新类MyMenuItemWithCheckBox。    在构造函数中,将元素ID设置为(例如)menuItemWIthCheckBox +唯一文本。    this.getElement()。setId(“ menuItemWithCheckBox_” + menuItemLabel);

2)创建扩展菜单栏的新类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的预定命令,但是对于您的情况 菜单复选框框项目,没有菜单栏关闭。

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

答案 1 :(得分:-1)

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

Buuut,有办法这样做......

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

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

然后你可以简单地将popup-Panel的属性autoHide设置为false,点击后弹出窗口不应该消失。

答案 2 :(得分:-1)

您可以在menuItems

上将hideOnClick设置为false

请参阅here