gpt4 book ai didi

gwt - EventHandlers 和 SinkEvents 做同样的功能工作吗?

转载 作者:行者123 更新时间:2023-12-03 14:58:45 26 4
gpt4 key购买 nike

我正在使用 GWT。我通过添加 EventHandlers 开始向我的小部件添加事件。

事件处理程序示例代码:

    widget.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// do something
}
});

然后我发现还有另一种使用 sinkEvents() 处理事件的方法。

接收器事件示例代码 ( from this website ):
 {
...
sinkEvents(Event.ONMOUSEDOWN | Event.ONMOUSEUP | Event.ONMOUSEOVER |Event.ONMOUSEOUT)
...
}

public void onBrowserEvent(Event event) {
Element td = getEventTargetCell(event);
if (td == null) return;
Element tr = DOM.getParent(td);
switch (DOM.eventGetType(event)) {
case Event.ONMOUSEDOWN: {
// do something
break;
}
case Event.ONMOUSEUP: {
// do something
break;
}
case Event.ONMOUSEOVER: {
// do something
break;
}
case Event.ONMOUSEOUT: {
// do something
break;
}
}
}
  • EventHandlers 和 SinkEvents 做同样的功能工作吗?
  • 如果是,有什么权衡? (你会在哪里使用另一个)
  • 如果不是,它们有什么不同?
  • 最佳答案

    我不是 GWT 专家,但这是我从查看 GWT 源代码中收集到的信息:

  • 所有事件处理程序(最终)调用 addDomHandler(..) 其中调用 sinkEvents() . sinkEvents()是较低级别的,是围绕原生 javascript 事件处理的浏览器抽象包装器。

    EventHandlers 建立在 sinkEvents 之上,因此它们提供 sinkEvents 所做的所有功能。

    但是在使用方面它们是不同的:使用 EventHandlers,您可以使用驻留在不同类中的不同事件处理程序来注册不同的事件类型。事件将自动路由到适当的处理程序。使用 sinkEvents 您可以注册不同的事件类型(通过 int,不是类型安全的),但始终是这个小部件的 onBrowserEvent(event)将被调用。
  • EventHandlers 增加了一定的开销。这是否重要,值得商榷。
  • EventHandlers 是一种添加和删除事件处理程序的类型安全方式,也是一种将事件路由到您选择的已注册处理程序的自动方式。如果您使用 GWT Widgets,那么您应该使用 EventHandlers。
  • 关于gwt - EventHandlers 和 SinkEvents 做同样的功能工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6076571/

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