1

GWTのすべてのハンドラーとそれに対応するコンテナーについての概要はありますか?ハンドラーをコンテナーに追加しようとするときはいつでも、ハンドラーがイベントを発生させるかどうかを確認する必要があります(JavaDocはこれに関する有用な情報を提供しません)。たとえば、ResizeHandler:

       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メソッドの呼び出しが発生しません。理由がわかりません。また、ハンドラーがこのコンテナーで許可されない理由のドキュメントも見つかりません。

使用可能なすべてのハンドラーの概要と、それらが起動される可能性のあるコンテナーおよびイベントを検索します。

4

2 に答える 2

1

通常、より具体的なaddHandler方法があります。たとえば、Buttonを持っていaddClickHandler(ClickHandler)ます。そのメソッドを定義するインターフェースはHasClickHandlersであるため、たとえば、それを調べることができます。

イベントに独自のaddXyzHandlerメソッドがない場合、おそらく十分にサポートされません。その場合、通常、ウィジェットをサブクラス化し、そのハンドラーのサポートを自分で追加するのは非常に簡単です。

于 2012-07-09T18:28:32.307 に答える
1

ウィジェットで addHandler() を使用してハンドラーを追加する場合、基になる DOM 要素が一致するイベントを確実にキャッチできるようにする必要があります。はいの場合は、ウィジェットにこのイベントをシンクするように指示する必要があります

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

ここで、eventBitsToAdd は com.google.gwt.user.client.Event の定数です。AFAIK ONRESIZE イベントはまだネイティブにサポートされていません。昨日言ったように、マウス ハンドラーとジェスチャーを実装するか、スライダーをオーバーライドする必要があります ;-)

于 2012-07-10T09:40:47.257 に答える