2012-04-10 67 views
12

我在GWT中創建了一個自定義控件,擴展了Composite並實現了ClickHandler。我已經實現了onClick方法,但是clickEvent不起作用。我應該在課堂上額外實施什麼方法才能使clickEvent正常工作?可能是HandlerRegistration?怎麼樣?在自定義控件中實現ClickHandler

+0

請標記其中一個答案爲接受,因爲他們可能回答你的問題,並解決了你的問題。 – 2012-10-05 08:40:11

回答

18

如果您希望您的小部件的行爲類似可點擊的GWT小部件,則應使用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

嘗試

this.addClickHandler(myClckHandler) ; 

或在未

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

這應該工作

編輯==> 這應該工作:

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

哪裏?在構造函數中?那麼它是myClickHandler? – arjacsoh 2012-04-10 13:59:07

+0

它仍然不會改變任何東西。我想這與HandlerRegistration有關。 – arjacsoh 2012-04-10 14:41:08