如果我在GWT中扩展Widget,如何使用祖先的EventBus?

时间:2011-12-12 09:04:56

标签: java events gwt customization

我正在扩展ScrollPanel并希望使用这个新小部件处理我自己的自定义事件。

我使用两种方法HasMyHandlersfireEvent(MyEvent event)建立了自己的HandlerRegistration addMyHandler(MyHandler handler)界面。

首先我创建了一个私有成员SimpleEventBus eventBus,但接下来认为祖先类应该已经拥有它自己的副本。

是否可以使用祖先的事件总线,即在其中注册处理程序并根据它来解雇它们?

1 个答案:

答案 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类。