2014-08-25 6 views
1

У меня есть панель навигации, которая является компонентом GWT MenuBar, который имеет другие панели меню со своими собственными MenuItems. Точно так же, как http://samples.gwtproject.org/samples/Showcase/Showcase.html#!CwMenuBarЗакрыть элементы навигационной панели GWT (MenuBar), когда фокус потерян

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 или его MenuItems.

Я начинаю думать, что я не могу переопределить это поведение с помощью GWT MenuBar (меню в JavaScript может вести себя таким образом, закрывая каскадное меню, когда вы перестаете нависнуть над ним, но так как GWT пишет этот JS-код для меня, я думаю, что цена за оплату заключается в том, что она будет вести себя таким образом ...), поэтому, пожалуйста, любой совет о том, как это сделать с GWT или подтвердить это невозможно, оценивается.

ответ

0

Такое поведение (скажем, autoHide on onBlur) невозможно с помощью стандартных компонентов GWT. Компоненты MenuBar и MenuItem просто не ведут себя таким образом и не могут быть принуждены к этому.

То, что я пробовал с прослушивателями событий и обработчиками, похоже, не работает.

Лучшим подходом к достижению этого, кажется, является создание пользовательских компонентов.

Смежные вопросы