Как настроить Clickhandler для разных кнопок? - PullRequest
0 голосов
/ 07 декабря 2011

Я использую gwt и хочу создать свой собственный onClickHandler.В Google Docs я нашел хороший пример:

public class HandlerExample extends Composite implements ClickHandler {
  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);
    b1.addClickHandler(this);
    b2.addClickHandler(this);
  }

  public void onClick(ClickEvent event) {
    // note that in general, events can have sources that are not Widgets.
    Widget sender = (Widget) event.getSource();

    if (sender == b1) {
      // handle b1 being clicked
    } else if (sender == b2) {
     // handle b2 being clicked
   }
  }
}

, но в моем проекте метод clickhandler отсутствует в файле с кнопками.Есть ли способ обрабатывать кнопки с разными функциями одним обработчиком?

greetz

Ответы [ 2 ]

0 голосов
/ 07 декабря 2011

Вы можете сделать что-то вроде этого:

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;
  }
}
0 голосов
/ 07 декабря 2011

Реализация HasClickHandlers взамен.Затем вы можете установить свои реализации ClickHanlder вне кода вашего виджета.

Вам нужны разные ClickHandler для разных кнопок?Если это так, то, возможно, вы могли бы просто использовать public / protected методы для установки ClickHandler для каждой кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...