2012-01-26 15 views
1

我想爲處理子小部件的onclick事件的superwidget創建處理程序。 有沒有這樣做的選擇?爲GWT中的子小部件創建自己的處理程序

例如: 我想註冊Clickhandler到absoultePanel。 absolutePanel包含不同的Image-Widgets。

因爲,我可以註冊每個圖像的處理程序,但我需要每個圖像相同的處理程序,因爲我需要一些全局信息。

,我想我可以做這樣的事情: if (event.getSource() instanceof Image)但它工作不適合我

格爾茨, 命運

回答

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好像你在找什麼

相關問題