Я пытаюсь добавить слушателей мыши в подменю / каскадные меню GWT MenuBar. К сожалению, я не могу напрямую получить доступ к подменю popuppanel - метод для этого (getPopup ()) является частным. И вы не можете получить к нему доступ через отражение из-за способа компиляции GWT.
Добавление слушателя мыши к строке главного меню (для определения, когда мышь находится внутри границ строки меню) было приятным и простым. Но я не могу придумать никакого способа добавить слушателя мыши, чтобы определять, когда мышь находится внутри одного из каскадных подменю.
Я делаю вот что:
com.google.gwt.user.client.ui.MenuBar myMainBar = new MenuBar();
myMainBar.addDomHandler(menuHoverOutHandler, MouseOutEvent.getType());
myMainBar.addDomHandler(menuHoverOverHandler, MouseOverEvent.getType());
Это отлично работает с реальной панелью меню GWT. Когда я нахожу указатель мыши, срабатывает событие mouseOverEvent. Когда я нахожу указатель мыши, срабатывает MouseOutEvent.
Проблема в том, что если я открою подменю из главной строки меню, наведение указателя мыши на это меню также вызовет событие MouseOutEvent. Мне это нужно, чтобы этого не делать.
Когда я говорю подменю, я имею в виду что-то вроде тех, что мы видели здесь:
http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/MenuBar.html
Итак, пока я нахожусь на «главной» панели со списком Style, Fruit и Term, события мыши распознают это.
Но если я выпаду в подменю с надписью «Полужирный», «Курсив», «Еще», события мыши будут считать, что я полностью покинул строку меню. Мне нужен способ определить, находится ли мышь внутри одного из этих подменю. (Или что подменю этой панели главного меню где-то открыто)
Вы не можете просто сделать
myMainBar.getPopup()
и добавьте слушателей в полученный PopupPanel, поскольку getPopup является закрытым. Ищу другой способ попасть в MenuBar.popup
Кажется, нет никакого способа узнать, открыто ли одно из подменю, что меня немного озадачивает. Кажется, разочаровывает отсутствие возможности взаимодействовать с этими подменю, и мне интересно, не упускаю ли я чего-то.
DomHandler
s в свои подменю? Если вы посмотрите на пример раздела MenuBar javadocs, вы можете увидеть, чтоMenuBar
создается каскадомMenuBar
s. Что мешает вам добавитьDomHandler
s к этим дочернимMenuBar
s? - person mucaho   schedule 15.10.2014