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.");
}
}
Run Code Online (Sandbox Code Playgroud)
我的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);
Run Code Online (Sandbox Code Playgroud)
/////在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");
}
}
Run Code Online (Sandbox Code Playgroud)
GwtEvent.Type用于根据事件特定和唯一对象分派事件(对象相等 - ==用于匹配事件类型).将您的CustomMouseMoveHandleras作为Typeto addHandler表示除了用于MouseMoveEvents 的事件类型之外的事件类型(实际上,在这种情况下,每个CustomMouseMoveHandler事件将分配给不同的事件,Type因为每个对象都不同).
GwtEvent.Type<MouseMoveHandler>您需要Type从MouseMoveEvent自身获取事件(使用静态getType()方法),而不是在处理程序中进行扩展.
不要延伸GwtEvent.Type到你的CustomMouseMoveHandler:
public class CustomMouseMoveHandler
implements MouseMoveHandler
{
...
}
Run Code Online (Sandbox Code Playgroud)
并添加处理程序:
cp.addDomHandler(handler, MouseMoveEvent.getType());
Run Code Online (Sandbox Code Playgroud)
DomEvents 必须使用 addDomHandler 注册,或者你必须为它们的事件类型使用 sinkEvents。addDomHandler 是 sinkEvents+addHandler 的快捷方式。
| 归档时间: |
|
| 查看次数: |
23769 次 |
| 最近记录: |