Java GWT-SinkEvent ONCLICK不工作
我有一个问题,我在MouseOver和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()
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;
}
}
});