2012-04-10 8 views
12

Ich erstelle ein benutzerdefiniertes Widget in GWT, das Composite erweitert und ClickHandler implementiert. Ich habe die Methode onClick bereits implementiert, aber das clickEvent funktioniert nicht. Welche Methode sollte ich zusätzlich in der Klasse implementieren, damit das ClickEvent funktioniert? Kann HandlerRegistrierung sein? Wie?Implementieren von ClickHandler in benutzerdefiniertem Widget

+0

Bitte markieren Sie eine dieser Antworten als akzeptiert, da sie wahrscheinlich Ihre Frage beantwortet und Ihr Problem gelöst haben. –

Antwort

18

Wenn Sie möchten, dass sich Ihr Widget wie anklickbare GWT-Widgets verhält, verwenden Sie die Schnittstelle com.google.gwt.event.dom.client.HasClickHandlers.

public class MyWidget extends Widget 
implements HasClickHandlers 
{ 
    public HandlerRegistration addClickHandler(
     ClickHandler handler) 
    { 
     return addDomHandler(handler, ClickEvent.getType()); 
    } 
} 
4

Versuchen

this.addClickHandler(myClckHandler) ; 

oder falls nicht vorhanden

this.addDomHandler(myClckHandler , ClickEvent.getType()) ; 

sollte dies

bearbeiten ==> sollte dies funktioniert funktioniert:

public class Foo extends Composite { 

private ClickHandler myClkHandler = new ClickHandler() { 
    @Override 
    public void onClick(ClickEvent event) { 
     Window.alert("Overnuts is the best !") ; 
    } 
}; 

public Foo() { 
    initWidget(this) ; 
    this.addDomHandler(myClkHandler, ClickEvent.getType()) ; 
    } 
} 
+0

Wo? Im Konstruktor? Wah es ist dann myClickHandler? – arjacsoh

+0

Es ändert sich immer noch nichts. Ich nehme an, es hat mit HandlerRegistration zu tun. – arjacsoh

Verwandte Themen