Я пишу виджет со следующей разметкой:
<g:HTMLPanel ui:field="shortcutPanel" styleName="{style.shortcut}">
<g:Image ui:field="shortcutImage"></g:Image>
<span ui:field="shortcutLabel"></span>
</g:HTMLPanel>
Таким образом, по существу отделение, которое переносится и изображение и маркировка. Теперь, вместо того, чтобы добавить обработчики событий на изображении/промежутке, я хотел бы, чтобы onClick был связан с HTMLPanel. Моя проблема однако состоит в том, что gwt говорит мне это
shortcutPanel не не связали addClickHandler метод
Таким образом, я предполагаю, что различие - то, что HTMLPanel не реализует HasClickHandlers
или что-то вдоль той строки. Я задаюсь вопросом затем, что является стандартным способом присоединить обработчик щелчков к элементу Ui, такому как HTMLPanel или еще лучше, является там таким Виджетом GWT, который является по существу оберткой отделения, к которой я могу легко присоединить события с @UiHandler аннотацией.
Вы, вероятно, ищете FocusPanel
- в ней есть все плюсы: HasAllFocusHandlers
, HasAllKeyHandlers
, HasAllMouseHandlers
, HasBlurHandlers
, HasClickHandlers
...., чтобы назвать несколько :) Я считаю, что это самый простой и лучший способ прикрепить обработчики кликов к панели.
Я не делал этого раньше, но вы можете сделать следующее:
MyPanel
, который расширяет HTMLPanel
и реализует HasClickHandlers
MyPanel.java
public HandlerRegistration addClickHandler(ClickHandler handler) {
return addDomHandler(handler, ClickEvent.getType());
}
HTMLPanel
на MyPanel
в вашем ui.xml и соответствующей реализации Java. Вы всегда можете посмотреть на реализацию HTMLTable
, чтобы понять, как работает распространение событий. Это панель
, которая реализует HasClickHandlers
.