2009-07-06 80 views
4

是否有已知的觸發GWT EventHandlers的命令?GWT EventHandlers的觸發順序

即。如果我有一個擴展ListBox的類並從構造函數中添加一個EventHandler,我可以肯定這個Handler會在另一個Handler之前被調用,而這個Handler之後被一個周邊類加入?

同樣,如果一個子類需要的構造:

Subclass() { 
    super(); 
    addChangeHandler(new ChangeHandler() { 
     // ... 
    }); 
} 

但超有增加了一個ChangeHandler相同的構造:

Superclass(){ 
    addChangeHandler(new ChangeHandler() { 
     // ... 
    }); 
} 

我們可以假設,他們將被觸發順序作爲超類的構造函數被調用並在子類之前添加Handler?

非常感謝,這讓我感到困惑。

Chris。

回答

4

觸發發生的順序是添加處理程序。據我所知,這在javadoc中沒有記錄,但我深入到GWT代碼中,並且最終在事件發生時調用com.google.gwt.event.shared.HandlerManager.HandlerRegistry.fireEvent(GwtEvent,boolean)方法被解僱。

在某些情況下,所有事件都以相反的順序被觸發,但這似乎並不與主要小部件綁定。如果您在com.google.gwt.event.shared.HandlerManager.HandlerManager(Object,boolean)上執行調用層次結構,您將看到誰會在啓用反向觸發的情況下調用HandlerManager。

+0

啊,是的! com.google.gwt.event.shared.HandlerManager.HandlerRegistry.fireEvent(GwtEvent event,boolean isReverseOrder) 您可以在此處查看它是否遍歷EventHandler類型的ArrayList。 謝謝! – 2009-07-06 16:04:07