2012-07-09 48 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事件尚未得到本機支持。所以正如我昨天所說的,你必須實現你的鼠標處理程序和手勢,或者覆蓋滑塊;-)