Vous voudriez mettre en œuvre ces interfaces dans votre classe:
- HasMouseOverHandlers
- HasMouseOutHandlers
- mouseOverHandler
- mouseOutHandler
MouseOverEvent est déclenché lorsque la souris entre dans l'élément et MouseOutEvent est déclenché quand ce n'est plus terminé.
HasMouseOverHandler est mis en œuvre comme ceci:
public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
return addDomHandler(handler, MouseOverEvent.getType());
}
HasMouseOutHandler est mis en œuvre comme ceci:
public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
return addDomHandler(handler, MouseOutEvent.getType());
}
Après que vous gérer les évènements en un mouseOverHandler et mouseOutHandler, devrait être assez simple après cela.
Si vous voulez ajouter un EventHandler à un élément qui existe déjà dans le HTML, la seule idée que j'ai trouvée est de créer une classe wrapper. Ceci est complètement non testé.
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());
}
}
Ensuite, vous pourriez obtenir un élément existant à partir du HTML et initialiser comme ceci:
onModuleLoad()
{
Element theElement = RootPanel().get("elementID");
ElementWrapper wrapper = new ElementWrapper(theElement);
wrapper.addMouseOverHandler(new myHandler());
}
Hope this helps.
Avez-vous retiré le ElementWrapper suggéré ci-dessous? – hannson