GWT:在所有div元素上添加事件处理程序

GWT:在所有div元素上添加事件处理程序,gwt,Gwt,如何使用GWT在所有div元素上添加事件处理程序? 我尝试了以下代码,但没有启动窗口警报(但设置了“etvoila”类): 私有节点列表pageDIVElements; public void initDiv(){ MyDIVEventHandler=新的MyDIVEventHandler(); pageDIVElements=Document.get().getElementsByTagName(“div”); 对于(int i=0;i

如何使用GWT在所有div元素上添加事件处理程序? 我尝试了以下代码,但没有启动窗口警报(但设置了“etvoila”类):

私有节点列表pageDIVElements;
public void initDiv(){
MyDIVEventHandler=新的MyDIVEventHandler();
pageDIVElements=Document.get().getElementsByTagName(“div”);
对于(int i=0;i

此方法有什么问题?

看起来您没有选择接收希望侦听器收到通知的事件。 例如,在本例中,我将在initDiv to元素或相关子元素中添加以下内容

DOM.sinkEvents(elem, Event.ONCLICK | Event.ONMOUSEOUT | Event.ONMOUSEOVER);
与类似,您可以将其包装在
标签中

NodeList<Element> elems = Document.get().getElementsByTagName("div");
for (int i = 0; i < elems.getLength(); i++) {
  Element elem = elems.get(i);
  Label l = Label.wrap(elem);
  l.addClickHandler(new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {
      Window.alert("yay!");
    }
  });
}
NodeList elems=Document.get().getElementsByTagName(“div”);
对于(int i=0;i
代码会编译(当将get(i)更正为getItem(i)时),但在执行时,会抛出以下错误java.lang.AssertionError:具有现有父小部件的小部件可能不会添加到com.google.gwt.user.client.ui.Label.wrap(Label.java:79)上的分离列表中。是否确实可以将此元素包装到标签中?在“DOM.setEventListener(castedElem…”行之前添加以下内容:DOM.sinkEvents(castedElem,Event.ONCLICK | Event.ONMOUSEOUT | Event.ONMOUSEOVER);