Создать собственный обработчик для подвиджетов в GWT - PullRequest
1 голос
/ 26 января 2012

Я хочу создать обработчик для супервиджета, который обрабатывает события onclick для субвиджетов.Есть ли возможность сделать это?

Например: я хочу зарегистрировать Clickhandler на absoultePanel.Абсолютная панель содержит различные виджеты изображений.

Конечно, я могу зарегистрировать обработчик для каждого изображения, но мне нужен один и тот же обработчик для каждого изображения, потому что мне нужна глобальная информация.я могу сделать что-то вроде этого: if (event.getSource() instanceof Image) но это работает не для меня

Привет, судьба

Ответы [ 2 ]

1 голос
/ 27 января 2012

В ответ на вашу попытку, event.getSource() вернет виджет, к которому был прикреплен обработчик. В вашем случае абсолютная панель.

Тем не менее, если вы хотите прикрепить один и тот же обработчик ко всем вашим изображениям, ничто не мешает вам сделать это:

ArrayList<Image> listOfImages = ...
ClickHandler ch = new MyImageClickHandler();
for (Image img : listOfImages){
   img.addClickHandler(ch);
}

Тем не менее, если вы все еще хотите добавить обработчик кликов на панель содержания изображения, учтите следующее:

Panel imgContainer = ...
ClickHandler ch = new ClickHandler(){
   public void onClick(ClickEvent event){
      Element e = Element.as(event.getNativeEvent().getEventTarget());
      if("img".equalsIgnoreCase(e.getTagName())){
         ImageElement img = ImageElement.as(e)
         //Clicked on image. Do stuff.
      }
   }
}

// If your panel implements HasClickHandlers
imgContainer.addClickHandler(ch);

// Otherwise, use this
imgContainer.addDomHandler(ch, ClickEvent.getType());
0 голосов
/ 27 января 2012

Если я правильно понял вопрос, то FocusPanel выглядит так, как вы ищете

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