焦点丢失时关闭GWT导航栏(MenuBar)项

时间:2014-08-25 20:37:25

标签: gwt menuitem menubar

我有一个导航栏,它只是一个GWT MenuBar组件,其中有其他带有自己MenuItem的MenuBars。就像http://samples.gwtproject.org/samples/Showcase/Showcase.html#!CwMenuBar

一样 当你将鼠标悬停在它上面时,

GWT MenuBar会打开级联菜单栏(假设你有.setAutoOpen(true))。我想创建当你停止悬停时菜单关闭的效果(因为我发现菜单保持打开很烦人,因为我不小心徘徊在它上面)。

我已经阅读了我在Google上找到的内容。我尝试过像

这样的事情
    myMenuBar.addHandler(new BlurHandler() {            
         @Override
        public void onBlur(BlurEvent event) {
            myMenuBar.closeAllChildren(true);
        }
    }, BlurEvent.getType());

(onBlur应该与onFocus相反)只是发现当我将鼠标悬停在其子节点上时,MenuBar会失去焦点(因此我无法选择任何内容,因为主MenuBar失去焦点并关闭,导致导航酒吧没用),但令人讨厌的是,如果我将鼠标悬停在任何其他地方(顶部,侧面等,可能因为没有其他组件可以偷走焦点),它就不会失去焦点,让级联菜单保持打开状态。

我尝试使用.setFocusOnHoverEnabled(false),但没有焦点,我无法知道我什么时候没有悬停在MenuBar或其MenuItem上。

我开始认为我无法用GWT MenuBar覆盖这种行为(JavaScript中的菜单可以这样做,当你停止在它上面停止时关闭级联菜单,但是因为GWT正在编写JS代码对我来说,我想付出的代价就是它会表现得那样...),所以,请关于如何用GWT做这件事或者确认不可能的任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

使用GWT标准组件似乎无法实现此行为(假设onBlur上的autoHide)。 MenuBar和MenuItem组件根本不会这样做,并且不能强制这样做。

我对事件监听器和处理程序的尝试似乎没有用。

实现这一目标的最佳方法似乎是构建自定义组件。