2009-07-06 12 views
4

GWT EventHandlerの発射順序は既知ですか?GWT EventHandlerの発射順序

ie。リストボックスを拡張し、コンストラクタからEventHandlerを追加するクラスがある場合、後で周囲のクラスによって追加される別のハンドラの前にこのハンドラが呼び出されることを確認できますか?サブクラスがコンストラクタかかる場合

は同様に、:

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

をしかし、スーパークラスがChangeHandlerを追加し、同じコンストラクタを持っています

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

我々は、彼らがトリガされる順序をとることができますスーパークラスのコンストラクタが呼び出され、サブクラスの前にハンドラが追加されたので、

多くのおかげで、これは私を困惑させていました。

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 イベント、ブールisReverseOrder) あなたはEventHandlerのタイプのArrayListのステップスルーここでそれを見ることができます。 ありがとう! –