GWT Widget.addHandler [英] GWT Widget.addHandler

查看:181
本文介绍了GWT Widget.addHandler的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图利用 Widget.addHandler()。但是,处理程序从未被调用。以下是我的示例代码。



我的处理程序实现:





< pre class =lang-java prettyprint-override> public class CustomMouseMoveHandler
extends GwtEvent.Type< MouseMoveHandler>
实现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;

/ **
*入口点类定义< code> onModuleLoad()< / code> ;.
* /
public class GwtHandler实现EntryPoint,MouseMoveHandler {

/ **
*这是入口点方法。
* /
public void onModuleLoad(){
TextArea comp = new TextArea();

comp.setSize(200px,200px);
comp.setText(测试文本);

comp.addHandler(this,MouseMoveEvent.getType());

RootPanel.get()。add(comp);
}

@Override
public void onMouseMove(MouseMoveEvent event){
com.google.gwt.user.client.Window.alert(onMouseMove);
}
}


解决方案

code> GwtEvent.Type 用于根据事件特定和唯一的对象(对象相等 - == - 调用事件以匹配事件类型)。将 CustomMouseMoveHandler 作为类型 addHandler 表示事件类型不同于用于 MouseMoveEvent s(实际上在这种情况下每个 CustomMouseMoveHandler 将被分配到不同的事件键入,因为每个对象都不同)



而不是扩展 GwtEvent.Type< MouseMoveHandler> / code>在您的处理程序中,您需要从 MouseMoveEvent 本身(使用静态 getType()方法)。



不要扩展 GwtEvent.Type CustomMouseMoveHandler

  public class CustomMouseMoveHandler 
实现MouseMoveHandler
{
...
}

添加处理程序:

  cp.addDomHandler(handler,MouseMoveEvent.getType()); 


I am trying to utilize Widget.addHandler(). However, the handler never gets called. Below is my sample code. What do I need to change to fix this?

My Handler Implementation:

public class CustomMouseMoveHandler
  extends GwtEvent.Type<MouseMoveHandler>
  implements MouseMoveHandler
{
  @Override
  public void onMouseMove(MouseMoveEvent event) {
    System.out.println("----> onMouseMove.");
  }
}

My 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);

///// Added on 7/1/2011.

The following complete GWT simple code does not work either (with Jason's hint applied). Please help me out. Thanks

 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 is used to dispatch events based on an event specific and unique object (object equality - == - is used to match event types). Passing your CustomMouseMoveHandler as the Type to addHandler indicates an event type other than that used for MouseMoveEvents (Indeed in this case every CustomMouseMoveHandler would be assigned to a different event Type since each object is different).

Instead of extending GwtEvent.Type<MouseMoveHandler> in your handler you need to get the event Type from MouseMoveEvent itself (using the static getType() method).

Don't extend GwtEvent.Type in your CustomMouseMoveHandler:

public class CustomMouseMoveHandler
  implements MouseMoveHandler
{
  ...
}

And to add the handler:

cp.addDomHandler(handler, MouseMoveEvent.getType());

这篇关于GWT Widget.addHandler的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆