Bạn muốn thực hiện các giao diện trong lớp học của bạn:
- HasMouseOverHandlers
- HasMouseOutHandlers
- MouseOverHandler
- MouseOutHandler
MouseOverEvent được kích hoạt khi chuột vào phần tử và MouseOutEvent được kích hoạt khi nó không còn nữa.
HasMouseOverHandler được thực hiện như thế này:
public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
return addDomHandler(handler, MouseOverEvent.getType());
}
HasMouseOutHandler được thực hiện như thế này:
public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
return addDomHandler(handler, MouseOutEvent.getType());
}
Sau đó bạn chỉ cần xử lý các sự kiện với một MouseOverHandler và MouseOutHandler, nên được khá đơn giản sau đó.
Nếu bạn muốn thêm EventHandler vào một Phần tử đã tồn tại trong HTML, ý tưởng duy nhất tôi đưa ra là tạo lớp bao bọc. Điều này hoàn toàn chưa được kiểm tra.
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());
}
}
Sau đó, bạn có thể nhận được một phần tử hiện tại từ HTML và khởi tạo như thế này:
onModuleLoad()
{
Element theElement = RootPanel().get("elementID");
ElementWrapper wrapper = new ElementWrapper(theElement);
wrapper.addMouseOverHandler(new myHandler());
}
Hope this helps.
Bạn đã kiểm tra ElementWrapper được đề xuất bên dưới chưa? – hannson