我正在扩展ScrollPanel
并希望使用这个新小部件处理我自己的自定义事件。
我使用两种方法HasMyHandlers
和fireEvent(MyEvent event)
建立了自己的HandlerRegistration addMyHandler(MyHandler handler)
界面。
首先我创建了一个私有成员SimpleEventBus eventBus
,但接下来认为祖先类应该已经拥有它自己的副本。
是否可以使用祖先的事件总线,即在其中注册处理程序并根据它来解雇它们?
答案 0 :(得分:3)
是的,有可能。执行此操作的标准方法是HandlerRegistration addMyHandler(MyHandler handler)
的实现:
public class MyWidget extends Widget implements HasMyHandlers {
@Override
public HandlerRegistration addMyHandler(MyHandler handler) {
return addHandler(handler, MyEvent.getType());
}
// Other methods
}
Widget.addHandler(...)
方法提供了将自定义事件处理程序连接到Widget的HandlerManager的机制。
要使用Widget.fireEvent(...)
方法向所有已注册的处理程序激活您的事件。因此,您可以执行以下操作:
fireEvent(new MyEvent(yourEventData));
值得注意的是,您的活动还应该扩展GwtEvent
类。