2012-04-10 13 views
12

Tworzę niestandardowy widget w GWT rozszerzając Composite i implementując ClickHandler. Zaimplementowałem już metodę onClick, ale clickEvent nie działa. Jaką metodę należy dodatkowo zastosować w klasie, aby narzędzie ClickEvent działało? Może być HandlerRejestracja? W jaki sposób?Implementowanie ClickHandler w niestandardowym Widget

+0

Proszę zaznaczyć jedną z tych odpowiedzi jako zaakceptowane, ponieważ prawdopodobnie odpowiedziały na Twoje pytanie i rozwiązały problem. –

Odpowiedz

18

Jeśli chcesz, aby widżet zachowywał się jak klikalne widżety GWT, użyj interfejsu 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

Spróbuj

this.addClickHandler(myClckHandler) ; 

lub jeśli nie są dostępne

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

ten powinien działa

zmienił ==> powinno to działa:

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

Gdzie? W konstruktorze? Waht to jest wtedy myClickHandler? – arjacsoh

+0

Wciąż nic nie zmienia. Przypuszczam, że ma to związek z HandlerRejestracja. – arjacsoh