GWT Widget.addHandler [英] 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 MouseMoveEvent
s (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屋!