在自定义窗口小部件中实现ClickHandler

时间:2012-04-10 13:45:03

标签: gwt

我正在GWT中创建一个自定义小部件,扩展Composite并实现ClickHandler。我已经实现了onClick方法,但是clickEvent不起作用。为了使clickEvent工作,我还应该在类中另外实现什么方法?可能是HandlerRegistration?怎么样?

2 个答案:

答案 0 :(得分: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());
    }
}

答案 1 :(得分: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()) ;
   }
}