Java GWT-SinkEvent ONCLICK不工作

Java GWT-SinkEvent ONCLICK不工作,java,dom,gwt,onclick,Java,Dom,Gwt,Onclick,我有一个问题,我在MouseOver和ONCLICK上放置了两个事件。 我的问题是,ONMOUSEOVER被调用,但是ONCLICK根本没有被解雇 这是我的代码示例 LIElement elem = Document.get().createLIElement(); DOM.sinkEvents(elem, Event.ONCLICK | Event.ONMOUSEOVER); DOM.setEventListener(elem, new EventListener()

我有一个问题,我在MouseOver和ONCLICK上放置了两个事件。 我的问题是,
ONMOUSEOVER
被调用,但是
ONCLICK
根本没有被解雇

这是我的代码示例

LIElement elem = Document.get().createLIElement();
        DOM.sinkEvents(elem, Event.ONCLICK | Event.ONMOUSEOVER);
    DOM.setEventListener(elem, new EventListener() {

        @Override
        public void onBrowserEvent(Event event) {


            if (Event.ONCLICK == event.getTypeInt()) {
                           //Not reaching this code block at all !! 
            }
            if (Event.ONMOUSEOVER == event.getTypeInt()) {
                //Everything is working fine here                       
            }

        }
    });
这段代码在系统的其他部分工作得很好,我正在动态生成元素,但我认为这不是问题所在

可能与附加浏览器侦听器或DOM渲染有关吗


如果您是从头开始创建小部件(直接使用DOM元素,而不是简单地创建组合),那么事件处理的设置有点奇怪。一般来说,它看起来像这样:

class MyWidget extends Widget {
    public MyWidget() {
        setElement(DOM.createDiv());
        sinkEvents(Event.ONCLICK);
    }

    public void onBrowserEvent(Event evt) {
        switch (DOM.eventGetType(evt)) {
            case Event.ONCLICK:
                // Do something insightful.
                break;
        }
    }
}
有关详细说明,请参见


下面的示例代码在Firefox和Chrome中也运行良好(未针对其他浏览器进行测试)


谢谢你的回答,但是ONCLICK事件仍然没有被触发。你的代码似乎有问题。首先使用示例代码进行尝试。根面板中只添加了一个组件。非常感谢,我修复了它。我错误地将主面板设置为null,而不是隐藏其声音。欢迎你。
final Element desc = Document.get().createLIElement();
SpanElement spanElement = Document.get().createSpanElement();
spanElement.setInnerHTML("Hello");

desc.appendChild(spanElement);

DOM.sinkEvents((com.google.gwt.user.client.Element) desc, Event.ONCLICK | Event.ONMOUSEOVER);
DOM.setEventListener((com.google.gwt.user.client.Element) desc, new EventListener() {
    @Override
    public void onBrowserEvent(Event e) {
        switch (DOM.eventGetType(e)) {
            case Event.ONCLICK:
                System.out.println("click");
                break;
            case Event.ONMOUSEOVER:
                System.out.println("hover");
                break;
        }
    }
});