2012-07-09 70 views
1

是否有关于GWT中所有处理程序及其相应容器的概述?每当我尝试向容器中添加处理程序时,我都必须检查处理程序是否触发事件(JavaDoc未提供有关此信息的有用信息)。例如,一个ResizeHandler:GWT中处理程序的概述

 SplitLayoutPanel splitLayoutPanel = new SplitLayoutPanel() { 
      @Override 
      public void onResize() { 
       super.onResize(); 
       System.out.println("onResize"); 
      }   
     }; 

     splitLayoutPanel.addHandler(new ResizeHandler() { 

      @Override 
      public void onResize(ResizeEvent event) { 

       System.out.println("resize"); 

      } 
     }, ResizeEvent.getType()); 

覆写在onResize() - 方法(1例)给出了一个信息,如果拆分的变化,但如果我添加ResizeHandler(2例),我没有得到任何调用onResize方法。我不明白为什么,也没有找到为什么处理程序不允许在这个容器中的文档。

我搜索所有可用处理程序的概述,以及它们可能的容器和事件,当它们被触发时。

回答

1

通常会有更具体的addHandler方法。例如,ButtonaddClickHandler(ClickHandler)。例如,定义该方法的接口是HasClickHandlers,因此您可以查看该方法。

如果事件没有它自己的addXyzHandler方法,它可能不会得到很好的支持。在这种情况下,通常很容易对小部件进行子类化,并自己为该处理程序添加支持。

1

如果您在Widget上使用addHandler()添加处理程序,则必须确保底层DOM元素可以捕获匹配的事件。如果是的话,你也必须告诉你的widget下沉使用

void com.google.gwt.user.client.ui.Widget.sinkEvents(int eventBitsToAdd) 

其中eventBitsToAdd是com.google.gwt.user.client.Event恒定此事件。 AFAIK ONRESIZE事件尚未得到本机支持。所以正如我昨天所说的,你必须实现你的鼠标处理程序和手势,或者覆盖滑块;-)