点击com.google.gwt.user.client.ui.DeckPanel会发生什么事?

时间:2011-10-17 20:50:15

标签: java events gwt handler

也许这是一个蹩脚的问题,但奇怪的是,经过30分钟的谷歌搜索,我找不到答案。

com.google.gwt.user.client.ui.DeckPanel会发生什么事? JavaDoc says它实现了HasHandlers,但它被声明为void fireEvent(GwtEvent<?> event)

我如何知道它所期望的类型,以便通过DeckPanel.addHandler(H handler, GwtEvent.Type<H> type)订阅它们来捕捉事件?

具体来说,我想在调用DeckPanel.showWidget()时捕获事件。

谢谢!

2 个答案:

答案 0 :(得分:3)

DeckPanel本身不会触发任何事件。 Widget类型实现addHandler,主要用于通用DOM事件支持 - 在调用DeckPanel#showWidget()时不会触发内置事件。你可以实现自己的:

public class MyDeckPanel extends DeckPanel {
  public HandlerRegistration addShowWidgetHandler(
      ShowWidgetEventHandler handler) {
    return addHandler(handler, ShowWidgetEvent.getType());
  }

  @Override
  public void showWidget(int index) {
    super.showWidget(index);
    fireEvent(new ShowWidgetEvent(index));
  }
}

答案 1 :(得分:0)

DeckPanel扩展了ComplexPanel,因此它只实现了HasAttachHandlers。因此,默认情况下,您只会收到AttachEvent因为它没有其他事件。但与使用任何HTML元素一样,您可以使用addDomHandleraddBitlessDomHandler使其下沉任何本机事件。