EventHandler 和 SinkEvent 是否执行相同的功能工作?

2024-03-24

我正在使用 GWT。我开始通过添加事件处理程序向我的小部件添加事件。

事件处理程序示例代码:

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

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

接收器事件示例代码(从这个网站 http://www.java2s.com/Code/Java/GWT/TableMouseOverEvent.htm):

 {
 ...
 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;
         }
     }
 }
  1. EventHandler 和 SinkEvent 是否执行相同的功能工作?
  2. 如果是,有哪些权衡? (你会在哪里使用其中一个而不是另一个)
  3. 如果不是,它们有何不同?

我不是 GWT 专家,但这是我通过查看 GWT 源代码得到的信息:

  1. 所有事件处理程序(最终)调用哪个调用sinkEvents(). sinkEvents()是较低级别的,是围绕本机 JavaScript 事件处理的浏览器抽象包装器。

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

    但在使用方面它们是不同的:使用 EventHandler,您可以使用驻留在不同类中的不同事件处理程序来注册不同的事件类型。事件将自动路由到适当的处理程序。使用sinkEvents,您可以注册不同的事件类型(通过int,不是类型安全的),但始终是这个小部件的onBrowserEvent(event)将被调用。

  2. 事件处理程序增加了一定的开销。这是否重要还有待商榷。

  3. 事件处理程序是添加和删除事件处理程序的类型安全方法,也是将事件路由到您选择的已注册处理程序的自动方法。如果您使用 GWT Widget,那么您应该使用 EventHandler。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EventHandler 和 SinkEvent 是否执行相同的功能工作? 的相关文章

  • TextBox 上的 GWT 输入事件

    给出以下代码 TextBox tb new TextBox tb addValueChangeHandler new ValueChangeHandler
  • 使用自定义对象建议创建 GWT SuggestOracle

    我正在尝试将下拉框小部件转换为 SuggestionBox 因为当前的下拉菜单有 100 多个选项 不过 您似乎只能将字符串建议添加到 SuggestOracle 中 我需要能够添加一个自定义对象 其中包含与数据库中的记录匹配的描述和 ID
  • 使用共享包中的 GWT NumberFormat 类

    在我的 GWT 项目中 我的服务返回一个类型的对象Shield我已经定义了 作为Shield客户端和服务器都使用类型 我已将类定义放在共享包中 The Shield类使用com google gwt i18n client NumberFo
  • 如何将 MouseEvents 添加到 AbsolutePanel?

    如何在不创建 Composite widget 的情况下将 MouseEvents 特别是 MouseOutHandlers 添加到 AbsolutePanel 或者这可能吗 据我所知 它涉及添加 DomHandler 和 HandlerR
  • GWT 简单 Web 表单提交 - 重定向到新页面

    我有一个用 Google Web 工具包编写的简单 Web 表单 我希望用户在单击提交按钮时跟踪新的 URL 但是 我找不到任何从 GWT 代码中将用户重定向到新 URL 的示例 我怎样才能实现这个目标 确切的答案是 form getEle
  • 如何在 CSSResource 中使用非标准 CSS 选择器

    我正在尝试在 webkit 中使用滚动条的样式 CSS 选择器如下所示 webkit scrollbar corner webkit scrollbar track piece disabled 等等 当我在 ClientBundle 中使
  • RemoteServiceServlet 和 RemoteService 有什么区别?

    我知道第一个是类 第二个是接口 但重点是 为什么客户服务应该扩展远程服务并为服务实现类扩展远程服务Servlet 那么幕后到底是什么 您正在尝试比较苹果和橙子 请阅读docs https developers google com web
  • 如何在引导后注入会话/用户对象?

    有一些示例将不同类型的对象注入到演示者中 但我找不到如何完成此操作的解释 In the 引导程序代码 http dev arcbees com gwtp get started Bootstrap Code html例如他们正在注入ASec
  • GWT 应用程序中使用的 Javascript 通用 clone() 方法

    我试图编写一个通用克隆函数 它应该能够进行真正的深度克隆 我遇到过这个链接 如何在 javascript 中深度克隆 https stackoverflow com questions 4459928 how to deep clone i
  • 在 GWT 中使数据网格的行可拖动

    我想制作一个数据网格 其中的行可以拖动 以便人们可以通过拖动行来上下移动行 由于数据网格的行将作为元素获取 我知道如何使小部件可拖动 但是如何使数据网格的行可拖动 我不想使用任何额外的插件或库来实现此目的 我所知道的唯一支持单元格小部件拖放
  • GWT 应用程序的内存使用情况

    我目前正在开发 GWT 应用程序 作为未来项目的技术证明 我喜欢用 Java 而不是 JavaScript 构建 AJAX 代码的方式 但当我重复调用 RPC 服务时 我似乎遇到了内存问题 浏览器内存使用量不断增长 当我搜索 Google
  • GWT 计时器取消不起作用

    我正在尝试编写代码来使用 GET 和 GETQuery 区分单击和双击 我明白了here http jsfiddle net KpCwN 4 所以我将它翻译成 GWT 如下所示 我的应用程序不能有全局变量 所以我用元素属性来完成该部分 im
  • 如何在 GWT 的 Jetty 中启用 HTTPS?

    如何在 GWT 附带的 Jetty 中启用 HTTPS gwt dev jar 中 隐藏 了一个 README SSL txt 你可以找到最新版本在 Github 上 https github com gwtproject gwt blob
  • 调试 GWT 应用程序时 Eclipse 挂起

    我们正在使用 JAVA GWT P 框架 版本 2 4 开发 Web 应用程序 我们使用 Eclipse 版本 3 7 Indigo 作为开发 GUI 当我们调试应用程序时 Eclipse 通常会挂起 令人惊讶的是 这是一种随机行为 而且这
  • MVP 和 GWT 小部件之间的通信

    如果我将 MVP 模式与 GWT 结合使用 如 2009 年 Google I O 中的 GWT 架构最佳实践讨论 但已将信息分散到多个小部件中 那么应该如何填充值对象 假设我有一个 EditPersonView Presenter 一个
  • 阐明 GWT RequestFactory 和 RequestContext 的工作原理

    我正在尝试将 RequestFactory 和编辑器框架实现到我的应用程序中 即使在研究了论坛 Google 开发者论坛和其他论坛之后 我仍然发现 关于将 RequestContext 与 RequestFactory 一起使用 我仍然不明
  • TextField“更改”事件仅在模糊时触发

    通常 Change 事件将在 TextField 失去焦点 模糊 后触发 但我需要它在字段值发生变化时立即触发 而不需要失去对该字段的关注 KeyListener 不会删除它 因为该值可能来自条形码扫描仪等 有什么办法可以做到这一点吗 提前
  • GWT 将表单参数发送到 servlet

    我正在尝试捕获 servlet 中接下来的两个突出显示的字段 我可以在其中获取上传的文件 源代码与中所示的完全相同GWT FormSubmit 类 Javadoc http google web toolkit googlecode com
  • 如何使用 GWT 检测操作系统?

    Basically what I want to know is to find out if my GWT application is running on a MacOS or any other operating system t
  • 测试 GWT 代码的最佳方法是什么[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • android 背景重复-y

    我有一个图像 我想将其放置在右侧并在 y 轴上重复它 HTML 中类似于 背景 url img png 右重复 y 在android中可以做到这一点吗 当我将此位图设置为背景时 它不在右侧
  • 检查 FTP 服务器上的可用空间

    我正在运行一个构建脚本 其中三个可执行文件 每个 100mb 被上传到 FTP 服务器 由于 FTP 服务器空间问题 第一次上传可能会失败 因此我们的构建过程会失败 这意味着我必须从服务器释放一些空间并再次运行构建脚本 这是浪费时间 我想在
  • Python 子模块在 python 3.7 中正确导入,但在 3.6 中则不然

    我的目录结构如下 test init py m1 init py f1 py f2 py test init py是空的 test m1 init py包含一行import test m1 f1 test m1 f1 py包含一行impor
  • 如何将复杂对象传递到 ASP.NET MVC 中的另一个视图?

    我正在尝试将一个复杂的对象 可以序列化 如果有帮助的话 传递给另一个视图 目前 这是我在某些控制器方法中拥有的代码 User user New User Name Fred Email xxxx return RedirectToActio
  • 为什么每个逻辑 CPU 在多线程情况下都有自己的 CR3 寄存器?

    当我们有一个支持某种形式的多线程的 CPU 时 每个逻辑 CPU 都有它自己的一组寄存器 至少 包括 CR3 寄存器 由于我们在执行不同线程时正在处理同一进程的虚拟地址空间 并且永远不会发生上下文切换 切换同一进程的线程时TLB缓存也不会失
  • conda环境安装后无法导入包

    我尝试安装gdal我的 conda 环境中的包 我激活了 gcpy 环境并使用安装了 gdal 包conda install c conda forge gdal 该软件包安装成功 但是 当我尝试导入包时 出现错误 In 1 import
  • .Bool、.so、? 之间的区别所以

    我试图找出上述例程和 if 语句之间的区别 say y Bool say y so say y say so y 会产生不同的结果 到目前为止 对我来说唯一明显的区别是 优先级高于so Bool and so似乎完全是同义词 这是正确的并且
  • Android谷歌地图异步任务添加标记

    我有一张地图 我有一个点数据库 我想在 AsyncTask 中显示数据库中的点 以便在加载点时用户可以在地图上移动 没有太多点 例如 353 等 但当用户更接近 缩放 具有更大标记的地图时 我会重新绘制所有点 当发生重绘时 应用程序冻结了不
  • Icalendar 事件 RSVP 是否有标准和实现

    总结是 我现在正在实现一个事件确认系统 但找不到 ICalendar 回复的正确格式 因此我想知道是否有一个完整的 REPLY 消息的示例 也许还有一个 PHP 库可以包装所有这些消息 现在了解详细信息 我们收到外部电子邮件 包括要求回复的
  • 使用 tidyr 中的收集改变了我的回归结果

    当我运行下面的代码时 一切都按预期进行 install packages dynlm install packages tidyr require dynlm require tidyr Time lt 1950 1993 Y lt c 5
  • WPF:ItemsControl 中的行和列

    我试过把两个孩子ListView and an ItemsControl在行和列中 通过设置网格RowDefinitions and ColumnDefinitions as the ItemsPanel财产 然而 当我输入时 子控件始终与
  • 根据 XSD 验证 XML 时出错

    我有一个简单的 XML 文件 我想根据 XSD 对其进行验证 当我使用一些随机验证器进行验证时 我总是收到以下错误 发现从元素 Entities 开始的无效内容 预期为 Entities 之一 这是 XML
  • 如何确定与 read.fwf 一起使用的正确文件编码(或使用解决方法来删除不合格的字符)

    我尝试了以下问题中的方法 但仍然陷入困境 如何检测 read csv 的正确编码 https stackoverflow com questions 4806823 how to detect the right encoding for
  • 如何保护资产文件夹中的数据库 sqlite(通过加密)?

    我有过逆向工程的经验 人们可以在android中安静流畅地访问你的数据库 我想知道有什么方法可以在创建时仅对我的数据库进行加密 而不是混淆整个apk 然后在运行时我将使用我的数据库 我对数据库的了解较少 因此任何建议都有助于保护资产文件夹中
  • 防止 LISP 中的终端输出

    我想运行一个函数 但不让它在终端中输出结果 例如 set A B 正常返回B在控制台中如下所示 gt gt gt set A B B gt gt gt A B 我不希望它返回任何东西 我仍然希望该函数能够完成它应该做的事情 只是默默地 gt
  • 良好的 javascript 参考 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 什么是一本好的 javascript 书籍或网站 不仅关注语法 而且很好地解释了 javascript
  • ld 链接问题:/usr/bin/ld: 找不到 [libraryname]

    我使用 Qmake 在 Ubuntu 9 10 上构建共享库 此共享库 A 依赖于另一个共享库 B B项目已成功建设 在项目 A 的 pro 文件中 我的 LIBS 变量如下所示 LIBS L datelib bin llibdatelib
  • 如何捕获 SOAP Webservice 方法中的任何异常?

    我提供一个SOAP WebMethod using Spring and CXF 我想捕获任何异常 已检查和未检查 并将它们转换为自定义 WebFault 我可以以某种方式为我的错误处理程序 拦截器分配一个错误处理程序 拦截器吗 WebSe
  • 如何在 JAXB 封送期间添加 XML 处理指令

    每当序列化集合 数组属性以获得类似的内容时 我想添加处理指令
  • EventHandler 和 SinkEvent 是否执行相同的功能工作?

    我正在使用 GWT 我开始通过添加事件处理程序向我的小部件添加事件 事件处理程序示例代码 widget addClickHandler new ClickHandler Override public void onClick ClickE