Che ci si vuole implementare queste interfacce nella tua classe:
- HasMouseOverHandlers
- HasMouseOutHandlers
- mouseOverHandler
- mouseOutHandler
MouseOverEvent viene attivato quando il mouse entra l'elemento e MouseOutEvent viene attivato quando non è più finito.
HasMouseOverHandler è implementata in questo modo:
public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
return addDomHandler(handler, MouseOverEvent.getType());
}
HasMouseOutHandler è implementata in questo modo:
public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
return addDomHandler(handler, MouseOutEvent.getType());
}
Dopo di che basta gestire gli eventi con un mouseOverHandler e mouseOutHandler, dovrebbe essere abbastanza semplice dopo.
Se si desidera aggiungere un EventHandler a un elemento già esistente nell'HTML, l'unica idea che ho creato è la creazione di una classe wrapper. Questo è completamente non testato.
class ElementWrapper extends UIObject implements HasMouseOverHandlers,
HasMouseOutHandlers
{
public ElementWrapper(Element theElement)
{
setElement(theElement);
}
public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
return addDomHandler(handler, MouseOutEvent.getType());
}
public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
return addDomHandler(handler, MouseOverEvent.getType());
}
}
allora si potrebbe ottenere un elemento esistente dal codice HTML e inizializzare in questo modo:
onModuleLoad()
{
Element theElement = RootPanel().get("elementID");
ElementWrapper wrapper = new ElementWrapper(theElement);
wrapper.addMouseOverHandler(new myHandler());
}
Spero che questo aiuti.
Avete controllato ElementWrapper suggerito di seguito? – hannson