2010-11-04 54 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

相關問題