Вы хотели бы реализовать эти интерфейсы в своем классе:
- HasMouseOverHandlers
- HasMouseOutHandlers
- MouseOverHandler
- MouseOutHandler
MouseOverEvent запускается, когда мышь входит в элемент, а MouseOutEvent запускается, когда он больше не заканчивается.
HasMouseOverHandler реализован так:
public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
return addDomHandler(handler, MouseOverEvent.getType());
}
HasMouseOutHandler реализован так:
public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
return addDomHandler(handler, MouseOutEvent.getType());
}
После этого вы просто обрабатываете события с помощью MouseOverHandler и MouseOutHandler, после этого все должно быть довольно просто.
Если вы хотите добавить EventHandler к элементу, который уже существует в HTML, единственная идея, которая мне пришла в голову, - это создание класса-оболочки. Это полностью не проверено.
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());
}
}
Тогда вы можете получить существующий элемент из HTML и инициализировать так:
onModuleLoad()
{
Element theElement = RootPanel().get("elementID");
ElementWrapper wrapper = new ElementWrapper(theElement);
wrapper.addMouseOverHandler(new myHandler());
}
Надеюсь, это поможет.