gpt4 book ai didi

java - GWT - SinkEvent ONCLICK 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 06:46:12 24 4
gpt4 key购买 nike

我遇到了一个问题,我接收了两个事件 ONMOUSEOVERONCLICK。我的问题是 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
}

}
});

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

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

任何帮助将不胜感激,我两天来一直在追求这个。

最佳答案

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

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 中也可以正常运行(未针对其他版本进行测试)。

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;
}
}
});

关于java - GWT - SinkEvent ONCLICK 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23945498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com