2010-11-04 46 views
8

我注意到有两种方法可以将事件处理程序连接到GWT小部件:addHandler和addDomHandler。用于addDomHandler的JavaDoc说:“向该小部件添加本机事件处理程序并吸收相应的本机事件。如果您不想吸收本机事件,请改为使用通用的addHandler方法。”GWT中的逻辑事件和本地事件有什么区别?

如果有人会启发我关于本地事件和逻辑事件之间的区别,我将不胜感激。

回答

6

本机事件是由浏览器直接触发的 - 点击,鼠标悬停,按键等事件。要在Widget上接收这些事件,您必须专门下载事件。

通用事件是,更通用的。例如,我创建了一个SaveEvent和一个DeleteEvent供我自己使用,当某些UI条件满足时会被解雇。它们离浏览器更远,不会被浏览器直接触发。我认为你应该坚持更通用的事件。另一方面,如果您创建的自定义小部件无法从其他小部件中制作出来,例如,如果要构建用户可以单击并拖动的滑块,则需要使用DOM事件。

+0

你是什么意思“你必须特意下沉事件”?你如何沉沦? – Mayumi 2013-04-15 00:31:35

+0

您在UIObject中调用“sinkEvents”(http://google-web-toolkit.googlecode.com/svn/javadoc/2.5/com/google/gwt/user/client/ui/UIObject.html#sinkEvents(int)) 。在你做完这些之后,你的小部件的'onBrowserEvent'将会被解雇。例如,如果您沉没鼠标事件,那么当您的小部件发生本机鼠标事件时,会触发'onBrowserEvent'。 – 2013-04-15 00:58:58

相关问题