将ClickHandler添加到每个按钮

时间:2014-01-17 12:44:54

标签: gwt event-handling

我正在尝试在GWT中实现点击日志记录系统,所以我知道人们在我的应用程序中的位置。

我希望能够自动执行此操作而不将处理程序添加到每个Button?

我在Composite课程中尝试过:

this.addDomHandler(new ClickHandler() {...}, ClickEvent.getType());

但是ClickEvent没有给我任何关于点击内容的细节。以下不起作用。

    NodeList<Element> elements = Document.get().getElementsByTagName("a");

    EventListener el = new EventListener() {

        @Override
        public void onBrowserEvent(Event event) {
            System.out.println(event.toString());
        }
    };

    for (int i = 0; i < elements.getLength(); i++) {
        Element e = elements.getItem(i);
        com.google.gwt.user.client.Element castedElem = (com.google.gwt.user.client.Element) e;
        DOM.sinkEvents(castedElem, Event.ONCLICK);
        DOM.setEventListener(castedElem, el);
    }

任何提示?

1 个答案:

答案 0 :(得分:1)

看看这里:

Notice every click in a gwt application

这将在您的应用程序中的每次点击时调用。

所以,如果你有这个代码:

Event.addNativePreviewHandler(new NativePreviewHandler() { 
      @Override 
      public void onPreviewNativeEvent(NativePreviewEvent event) {
        if (event.getNativeEvent().getType().equals("click")) { 
            Element eventTarget = DOM.eventGetTarget(Event.as(event.getNativeEvent()));
          // check if eventTarget is an a-tag 
        } 
      }
    });

每次点击鼠标,您都会收到一个事件。如果点击了a-tag,则将事件视为事件以查看。

希望有所帮助。

相关问题