Я столкнулся с той же проблемой, и я поделюсь с вами своим решением:
1) Создайте новый класс MyMenuItemWithCheckBox, который расширяет MenuItem.
В конструкторе установите идентификатор элемента в (например) menuItemWIthCheckBox + Уникальный текст.
this.getElement (). setId ("menuItemWithCheckBox_" + menuItemLabel);
2) Создайте новый класс MyMenuBar, расширяющий панель меню.
Переопределите метод onBrowserEvent следующим образом:
Override
public void onBrowserEvent(Event event) {
if (DOM.eventGetType(event) == Event.ONCLICK && getSelectedItem().getElement().getId().contains("CheckBox")) {
Scheduler.get().scheduleFinally(new Scheduler.ScheduledCommand() {
@Override
public void execute() {
getSelectedItem().getScheduledCommand().execute();
}
});
event.stopPropagation();
} else {
super.onBrowserEvent(event);
}
}
Теперь запланированная команда MenuItem вызывается всегда, но в случае вашей
Пункт меню checkBox закрывается без строки меню.
Надеюсь, это поможет вам. Я потратил больше дня на создание этого решения. : -)