Sie wollen würde diese Schnittstellen in Ihrer Klasse implementieren:
- HasMouseOverHandlers
- HasMouseOutHandlers
- mouseoverhandler
- mouseOutHandler
MouseOverEvent wird ausgelöst, wenn die Maus das Element eintritt und MouseOutEvent wird ausgelöst, wenn es nicht mehr zu Ende ist.
HasMouseOverHandler wie dies umgesetzt wird:
public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
return addDomHandler(handler, MouseOverEvent.getType());
}
HasMouseOutHandler wie dies umgesetzt wird:
public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
return addDomHandler(handler, MouseOutEvent.getType());
}
Danach Sie nur die Ereignisse behandeln mit einem mouseoverhandler und mouseOutHandler sollte hübsch sein direkt danach.
Wenn Sie einen EventHandler zu einem Element hinzufügen möchten, das bereits im HTML vorhanden ist, ist die einzige Idee, die ich mir ausgedacht habe, das Erstellen einer Wrapper-Klasse. Dies ist vollständig nicht getestet.
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());
}
}
Dann könnten Sie ein vorhandenes Element aus der HTML erhalten und wie folgt initialisieren:
onModuleLoad()
{
Element theElement = RootPanel().get("elementID");
ElementWrapper wrapper = new ElementWrapper(theElement);
wrapper.addMouseOverHandler(new myHandler());
}
Hoffnung, das hilft.
Haben Sie sich den unten vorgeschlagenen ElementWrapper angesehen? – hannson