Events GWT的BrowserEvent和NativeEvent到底是什么?

Events GWT的BrowserEvent和NativeEvent到底是什么?,events,gwt,Events,Gwt,什么是浏览器事件?例如,如果我有一个自定义小部件,其中包含一个覆盖onBrowserEvent的按钮。而onBrowserEvent方法仅在单击按钮时调用。我认为这个事件是为所有事件调用的,比如onMouseOver、onMouseOut、KeyPressed等 另外,当您添加DomHandler以使小部件侦听默认情况下不受支持的事件时。在文档中,它说“向小部件添加一个本机事件处理程序并接收相应的本机事件”,在这种上下文中,本机事件是什么意思 谢谢,GWT有沉没事件的概念。所有沉没事件(但只有那

什么是浏览器事件?例如,如果我有一个自定义小部件,其中包含一个覆盖onBrowserEvent的按钮。而onBrowserEvent方法仅在单击按钮时调用。我认为这个事件是为所有事件调用的,比如onMouseOver、onMouseOut、KeyPressed等

另外,当您添加DomHandler以使小部件侦听默认情况下不受支持的事件时。在文档中,它说“向小部件添加一个本机事件处理程序并接收相应的本机事件”,在这种上下文中,本机事件是什么意思

谢谢,GWT有沉没事件的概念。所有沉没事件(但只有那些)都会传递给a的
onBrowserEvent

在最低级别,您可以将
事件侦听器
附加到
元素
,并使用(或最近)的事件接收事件。为了避免内存泄漏(尤其是在旧IEs中,如果不仅仅是这样),您必须确保在页面卸载之前将
元素
事件侦听器
设置为
null

Widget
是一个
EventListener
并为您处理其中的一些事情:它在其
onAttach
onDetach
中自动调用
DOM.setEventListener
,并跟踪沉没事件:它的
sinkEvents
是可添加的,使其更易于使用,因此有一个对应的
unsinkEvents

后来,在GWT1.6中,添加了事件处理程序,
addDomHandler
(以及最近的
addBitlessDomHandler
)自动调用带有适当值的
sinkEvents
(取自
doEvent.Type
作为参数传递);为了完成所有这些工作,小部件中的
onBrowserEvent
的默认行为是将事件分派给已注册的处理程序

这些无位变体的原因是事件最初在位字段中被称为
int
常量,但浏览器中的事件越来越多,因此GWT开始耗尽位。无位变体仅适用于不泄漏的浏览器,因为与基于位的事件相反,Widget不会通过这种方式跟踪已注册的事件,从而从其
ondeach
中注销它们

所有这些从GWT1.6开始的新
DomeEvent
s(及其处理程序)都是围绕
NativeEvent
的包装。有两种
GwtEvent
s:原生的(
DomEvent
s),由浏览器调度;逻辑的由GWT本身调度,并且不映射到DOM级别的事件
addDomHandler
只关心
DomeEvent
s,即本机事件


收尾:当您退出刚修改的文本字段时,浏览器将发送一个
change
事件。如果
TextBox
小部件已丢弃该事件,则其
onBrowserEvent
将被调用,其中包含表示该事件的
事件
(它只是
NativeEvent
的遗留子类)。
onBrowserEvent
的默认实现然后创建一个
ChangeEvent
并将其分派给注册的
ChangeHandler
s.

什么是沉没事件?当你说“widget已经击沉了那个事件”时,那到底是什么意思?英语动词:sink/sink/sink。在GWT的上下文中,如果调用了
sinkEvents
,并将其代码作为参数,则事件将被丢弃。@ThomasBroyer现在我得到了BrowserEvents的澄清…非常感谢。