Pet*_*ter 2 gwt event-handling addhandler
我正在努力利用Widget.addHandler().但是,处理程序永远不会被调用.以下是我的示例代码.我需要更改什么来解决这个问题?
我的处理程序实现:
public class CustomMouseMoveHandler
  extends GwtEvent.Type<MouseMoveHandler>
  implements MouseMoveHandler
{
  @Override
  public void onMouseMove(MouseMoveEvent event) {
    System.out.println("----> onMouseMove.");
  }
}
我的EntryPoint.OnModuleLoad():
ContentPanel cp = new ContentPanel();
cp.setHeaderVisible(false);
cp.setHeight(com.google.gwt.user.client.Window.getClientHeight());
CustomMouseMoveHandler handler = new CustomMouseMoveHandler();
cp.addHandler(handler, handler);
RootPanel.get().add(cp);
/////在2011年7月1日添加.
以下完整的GWT简单代码也不起作用(应用Jason的提示).请帮帮我.谢谢
 package tut.client;
 import com.google.gwt.core.client.EntryPoint;
 import com.google.gwt.event.dom.client.MouseMoveEvent;
 import com.google.gwt.event.dom.client.MouseMoveHandler;
 import com.google.gwt.user.client.ui.RootPanel;
 import com.google.gwt.user.client.ui.TextArea;
  /**
  * Entry point classes define <code>onModuleLoad()</code>.
  */
    public class GwtHandler implements EntryPoint, MouseMoveHandler {
        /**
         * This is the entry point method.
         */
        public void onModuleLoad() {
           TextArea comp = new TextArea();
           comp.setSize("200px", "200px");
           comp.setText("Testing Text");        
           comp.addHandler(this, MouseMoveEvent.getType());
           RootPanel.get().add(comp);
        }
       @Override
       public void onMouseMove(MouseMoveEvent event) {
           com.google.gwt.user.client.Window.alert("onMouseMove");
       }
}
GwtEvent.Type用于根据事件特定和唯一对象分派事件(对象相等 - ==用于匹配事件类型).将您的CustomMouseMoveHandleras作为Typeto addHandler表示除了用于MouseMoveEvents 的事件类型之外的事件类型(实际上,在这种情况下,每个CustomMouseMoveHandler事件将分配给不同的事件,Type因为每个对象都不同).
GwtEvent.Type<MouseMoveHandler>您需要Type从MouseMoveEvent自身获取事件(使用静态getType()方法),而不是在处理程序中进行扩展.
不要延伸GwtEvent.Type到你的CustomMouseMoveHandler:
public class CustomMouseMoveHandler
  implements MouseMoveHandler
{
  ...
}
并添加处理程序:
cp.addDomHandler(handler, MouseMoveEvent.getType());
DomEvents 必须使用 addDomHandler 注册,或者你必须为它们的事件类型使用 sinkEvents。addDomHandler 是 sinkEvents+addHandler 的快捷方式。