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

焦点丢失时关闭GWT导航栏(菜单栏)项,gwt,menuitem,menubar,Gwt,Menuitem,Menubar,我有一个导航栏,它只是一个GWT菜单栏组件,其他菜单栏都有自己的菜单项。就像 当您将鼠标悬停在GWT菜单栏上时,GWT菜单栏将打开该菜单栏(前提是您有.setAutoOpen(true))。我想创建一种效果,即当您停止悬停时,菜单将关闭(例如,我发现菜单保持打开状态只是因为我不小心将鼠标悬停在它上面,这很烦人) 我在谷歌上能找到的书已经读了很多了。我试着做一些类似的事情 myMenuBar.addHandler(new BlurHandler() {

我有一个导航栏,它只是一个GWT菜单栏组件,其他菜单栏都有自己的菜单项。就像

当您将鼠标悬停在GWT菜单栏上时,GWT菜单栏将打开该菜单栏(前提是您有.setAutoOpen(true))。我想创建一种效果,即当您停止悬停时,菜单将关闭(例如,我发现菜单保持打开状态只是因为我不小心将鼠标悬停在它上面,这很烦人)

我在谷歌上能找到的书已经读了很多了。我试着做一些类似的事情

    myMenuBar.addHandler(new BlurHandler() {            
         @Override
        public void onBlur(BlurEvent event) {
            myMenuBar.closeAllChildren(true);
        }
    }, BlurEvent.getType());
(onBlur应该与onFocus相反)当我将鼠标悬停在其子菜单栏上时,才发现菜单栏失去了焦点(因此我无法选择任何内容,因为主菜单栏失去了焦点并关闭,使得导航栏无用),但令人烦恼的是,如果我将鼠标悬停在其他任何地方,它不会失去焦点(顶部、侧面等,可能是因为没有其他组件窃取焦点),使级联菜单保持打开状态

我尝试使用.setFocusOnHoverEnabled(false),但如果没有焦点,我无法知道何时我没有在菜单栏或其菜单项上悬停

我开始认为我不能用GWT菜单栏来覆盖这个行为(JavaScript中的菜单可以这样做,当你停止悬停在它上面时关闭级联菜单,但是既然GWT正在为我编写JS代码,我想付出的代价就是它会这样做……),因此,请提供有关如何使用GWT执行此操作或确认此操作不可行的任何建议,我们将不胜感激。

GWT标准组件似乎不可能执行此操作(比如在onBlur上自动隐藏)。MenuBar和MenuItem组件根本就不是这样的,因此不能强制执行此操作

我对事件侦听器和处理程序的尝试似乎不起作用

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