К сожалению, это невозможно с помощью методов, предоставляемых gwt.MenuItem
является прямым подклассом UiObject
, это тот же суперкласс, Widget
наследуемый от, но MenuItem не является виджетом.Проблема в том, что все функции событий определены в Widget, а не в UiObject.
Вы можете попытаться создать класс com.google.gwt.user.client.ui.MenuItem
в своем собственном проекте, тем самым «переопределив» класс gwt, пусть он наследуется отВиджет, скопируйте оригинальный MenuItem в и реализуйте необходимые интерфейсы.Я бы не рекомендовал это, хотя.Мне почти стыдно даже упоминать об этом.Более элегантным решением было бы создание класса MyMenuItem в вашем собственном пакете.Скопируйте в него содержимое MenuItem, но позвольте ему наследовать от Widget.Затем вы используете правило переплета в вашем .gwt.xml, чтобы заменить MenuItem на MyMenuItem.Просто не забудьте скопировать MenuItem снова при изменении версии GWT.
В качестве альтернативы, вы можете переопределить MenuItem и добавить свои собственные функции обработки событий.Вы можете посмотреть на Widget
и его подклассы (TextField, Button ...), чтобы увидеть, как это должно быть сделано.Хорошее место для начала было бы Widget#addDomHandler
.Это не так сложно, как кажется - грязная работа скрыта в классе DOM
GWT, который также используется классом Widget.В основном это копирование / вставка.Недостаток в том, что ваш класс может больше не работать, если вы хотите использовать новую версию GWT и его нужно переписать.
Лично я бы не реализовал такой выбор как мгновенный эффект наведения мыши.Это звучит хорошо для новых пользователей, но как опытный пользователь, я был бы раздражен.обычно пункты меню сгруппированы на экране, поэтому, когда я хочу определенный элемент меню, в большинстве случаев приходится также навести курсор мыши на другие элементы.что приводит к миганию пунктов меню - раздражает, особенно когда я уже сотню раз делал это и знал зависимости команд.Могу ли я рекомендовать объединить это с таймером, чтобы зависимости выбирались через определенное время, например, 500 мс?опытные пользователи нажимают достаточно быстро, чтобы не беспокоиться об этом, а новые пользователи могут - при необходимости - немного подождать, чтобы получить дополнительную помощь.
О, и если вы действительно хотите это сделать, наведение курсора недовольно.Вы также должны прослушивать события фокусировки - многие пользователи используют свою клавиатуру для навигации, которая не попадает при наведении мыши, но запускает события фокусировки.