2010-11-04 845 views
8

Observé que hay dos métodos mediante los cuales se puede conectar un controlador de eventos a un widget de GWT: addHandler y addDomHandler. El JavaDoc para addDomHandler dice: "Agrega un controlador de eventos nativo al widget y elimina el evento nativo correspondiente. Si no desea hundir el evento nativo, utilice en su lugar el método genérico addHandler".¿Cuál es la diferencia entre los eventos lógicos y los eventos nativos en GWT?

Estaría muy agradecido si alguien me aclarara la diferencia entre los eventos nativos y los eventos lógicos.

Respuesta

6

Los eventos nativos son activados directamente por el navegador - eventos como clics, mouseover, presionar teclas, etc. Para recibir esos eventos en un Widget, debe específicamente hundir los eventos.

Los eventos genéricos son, bueno, más genéricos. Por ejemplo, he creado un SaveEvent y un DeleteEvent para mi propio uso, que se activan cuando se cumplen ciertas condiciones de UI. Están más alejados del navegador y nunca serán despedidos directamente por el navegador. Creo que deberías quedarte con los eventos más genéricos cuando puedas. Por otro lado, si está creando un widget personalizado que no puede hacer con otros widgets, por ejemplo, si desea construir un control deslizante en el que el usuario pueda hacer clic y arrastrar, necesitará los eventos DOM.

+0

¿Qué quiere decir con "tiene que específicamente hundir los eventos"? ¿Cómo los hundes? – Mayumi

+0

Llamas a 'sinkEvents' en UIObject (http://google-web-toolkit.googlecode.com/svn/javadoc/2.5/com/google/gwt/user/client/ui/UIObject.html#sinkEvents(int)) . Después de hacer eso, el widget 'onBrowserEvent' se disparará con eventos relevantes. Por ejemplo, si hundes los eventos del mouse, se activará 'onBrowserEvent' cuando ocurran eventos nativos del mouse en tu widget. –

Cuestiones relacionadas