GWT UiHandler auf HTMLPanel
Schreibe ich ein widget mit dem folgenden markup:
<g:HTMLPanel ui:field="shortcutPanel" styleName="{style.shortcut}">
<g:Image ui:field="shortcutImage"></g:Image>
<span ui:field="shortcutLabel"></span>
</g:HTMLPanel>
Also im wesentlichen einem div umschließt, und image und ein label. Nun, statt der addition der event-Handler auf das Bild/span, ich würde gerne ein onClick im Zusammenhang mit der HTMLPanel. Mein problem ist jedoch, dass gwt sagt mir, dass
shortcutPanel nicht eine addClickHandler Methode, die
So, ich nehme an, der Unterschied ist, dass HTMLPanel nicht umsetzen HasClickHandlers
oder etwas entlang dieser Linie. Ich Frage mich dann, was ist der standard-Weg, befestigen Sie einen click-Ereignishandler für ein Ui-element wie ein HTMLPanel oder noch besser, gibt es so eine GWT-Widget, das ist im wesentlichen ein div-wrapper, ich kann problemlos Ereignisse anfügen, um mit der @UiHandler annotation.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie wahrscheinlich auf der Suche nach
FocusPanel
- es hat all die goodies:HasAllFocusHandlers
,HasAllKeyHandlers
,HasAllMouseHandlers
,HasBlurHandlers
,HasClickHandlers
.... zu nennen ein paar 🙂 ich finde, es ist das einfachste und beste Weg, um zu befestigen, klicken Sie auf Handler, um ein Panel.Habe ich nicht getan, bevor, aber könnten Sie Folgendes tun:
MyPanel
erweitertHTMLPanel
und implementiertHasClickHandlers
MyPanel.java
HTMLPanel
mitMyPanel
in Ihrem ui.xml und der entsprechenden Java-Implementierung.Können Sie immer sehen bei der Umsetzung der
HTMLTable
, um ein Verständnis dafür, wie die event-propagation funktioniert. Es ist einPanel
und implementiertHasClickHandlers
.Super,
es funktioniert.
Wenn Sie möchten, verwenden Sie die @UiHandler Kommentar zu registrieren von Ereignishandlern für Ihre benutzerdefinierten widgets, die Sie benötigen, zu re-implementieren Sie die addXXHandler Methoden. Der GWT-compiler nicht scheinen zu finden, diese in Oberklassen. wenn Sie z.B. möchten, verwenden Sie
und Ihre CustomWidget erweitert eine Klasse, für die dies funktioniert, müssen Sie möglicherweise die HasSelectionHandlers interface explizit zu Ihrer Klasse: