Gwt 如何为不同的按钮设置Clickhandler?

Gwt 如何为不同的按钮设置Clickhandler?,gwt,onclick,Gwt,Onclick,我正在使用gwt,希望创建自己的onClickHandler。 在谷歌文档中,我发现了一个很好的例子: 公共类句柄示例扩展了复合实现ClickHandler{ 私有FlowPanel fp=新的FlowPanel(); 专用按钮b1=新按钮(“按钮1”); 专用按钮b2=新按钮(“按钮2”); 公共HandlerExample(){ initWidget(fp); fp.添加(b1); fp.add(b2); b1.添加ClickHandler(本); b2.添加ClickHandler(此);

我正在使用gwt,希望创建自己的onClickHandler。 在谷歌文档中,我发现了一个很好的例子:

公共类句柄示例扩展了复合实现ClickHandler{
私有FlowPanel fp=新的FlowPanel();
专用按钮b1=新按钮(“按钮1”);
专用按钮b2=新按钮(“按钮2”);
公共HandlerExample(){
initWidget(fp);
fp.添加(b1);
fp.add(b2);
b1.添加ClickHandler(本);
b2.添加ClickHandler(此);
}
公共作废一次点击(点击事件){
//请注意,一般情况下,事件可以有非小部件的源。
Widget sender=(Widget)event.getSource();
如果(发送方==b1){
//正在单击的句柄b1
}否则如果(发送方==b2){
//正在单击的句柄b2
}
}
}
但是在我的项目中,clickhandlermethod不在带有按钮的文件中。是否有一种方法可以用一个处理程序处理具有不同功能的按钮

格里茨

改为实施。然后,您可以从小部件代码外部设置的实现


您是否需要为不同的按钮设置不同的
点击处理程序
?如果是这样的话,那么您可以使用
public
/
protected
方法为每个按钮设置
ClickHandler

您可以这样做:

public class HandlerExample extends Composite {
  private FlowPanel fp = new FlowPanel();
  private Button b1 = new Button("Button 1");
  private Button b2 = new Button("Button 2");

  public HandlerExample() {
    initWidget(fp);
    fp.add(b1);
    fp.add(b2);
  }

  public List< HandlerRegistration > addClickHandlerToAllButtons( ClickHandler handler ) {
    List< HandlerRegistration > handlerRegistrations = new ArrayList< HandlerRegistration >();
    handlerRegistrations.add( b1.addClickHandler( handler ) );
    handlerRegistrations.add( b2.addClickHandler( handler ) );

    return handlerRegistrations;
  }
}
公共类HandlerExample扩展了复合{
私有FlowPanel fp=新的FlowPanel();
专用按钮b1=新按钮(“按钮1”);
专用按钮b2=新按钮(“按钮2”);
公共HandlerExample(){
initWidget(fp);
fp.添加(b1);
fp.add(b2);
}
公共列表添加ClickHandlerToAllButtons(ClickHandler处理程序){
ListhandlerRegistrations=new ArrayList();
handlerRegistrations.add(b1.addClickHandler(handler));
handlerRegistrations.add(b2.addClickHandler(handler));
返回登记;
}
}