2010-11-04 1 views
8

Ho notato che ci sono due metodi con cui un gestore di eventi può essere collegato a un widget GWT: addHandler e addDomHandler. JavaDoc per addDomHandler dice: "Aggiunge un gestore di eventi nativo al widget e affonda l'evento nativo corrispondente. Se non vuoi affondare l'evento nativo, usa invece il metodo generico addHandler".Qual è la differenza tra eventi logici ed eventi nativi in ​​GWT?

Sarei molto grato se qualcuno mi illuminasse sulla differenza tra eventi nativi ed eventi logici.

risposta

6

Gli eventi nativi vengono attivati ​​direttamente dal browser: eventi come clic, passaggi del mouse, pressioni dei tasti, ecc. Per ricevere tali eventi su un widget, è necessario affondare gli eventi in modo specifico.

Gli eventi generici sono, beh, più generici. Ad esempio, ho creato un SaveEvent e un DeleteEvent per uso personale, che viene generato quando vengono soddisfatte determinate condizioni dell'interfaccia utente. Sono più distanti dal browser e non verrebbero mai attivati ​​direttamente dal browser. Penso che dovresti seguire gli eventi più generici quando puoi. D'altra parte, se stai creando un widget personalizzato che non puoi distinguere da altri widget, ad esempio, se desideri creare un dispositivo di scorrimento che l'utente può fare clic e trascinare, avrai bisogno degli eventi DOM.

+0

Cosa intendi con "devi affondare gli eventi in modo specifico"? Come li affondi? – Mayumi

+0

Si chiama 'sinkEvents' in UIObject (http://google-web-toolkit.googlecode.com/svn/javadoc/2.5/com/google/gwt/user/client/ui/UIObject.html#sinkEvents(int)) . Dopo averlo fatto, il 'widgetBrowserEvent' del tuo widget verrà attivato con eventi rilevanti. Ad esempio, se si affondano gli eventi del mouse, verrà attivato 'onBrowserEvent' quando eventi del mouse nativo si verificano nel widget. –