2012-01-26 2 views
1

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

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

Я могу зарегистрировать обработчик для каждого изображения, но мне нужен один и тот же обработчик для каждого изображения, потому что мне нужны некоторые глобальные данные.

я думал, что я могу сделать что-то вроде этого: if (event.getSource() instanceof Image), но он работает не для меня

Greetz, судьба

ответ

1

В ответ на вашу попытку 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

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

Смежные вопросы