1

com.google.gwt.user.client.ui.AbsolutePanelにProvidesResizeインターフェイスを実装しようとしました。次に、想定される子に RequiresResize を実装しましたが、メソッド onResize() の呼び出しに失敗したか、取得できなかったようです:(

だから私の質問は... AbsolutePanel 子ウィジェットのサイズが変更されたかどうかをキャッチする方法と、それは可能ですか?

PS GWT 2.2/2.3

4

3 に答える 3

2

パネル自体がRequiresResizeインターフェースを実装し、onResize()メソッドに次のようなことをさせることができます ( DeckLayoutPanelからコピー):

  public void onResize() {
    for (Widget child : getChildren()) {
      if (child instanceof RequiresResize) {
        ((RequiresResize) child).onResize();
      }
    }
  }

パネルをウィジェットの子にするProvidesResizeと、一連の onResize() 呼び出しがパネルを介してパネルの子に伝播するはずです。

于 2013-02-06T17:40:00.363 に答える
1

HTML は、何かがいつサイズを変更したかを教えてくれません。主要なバマー。

あなたが知ることができるのは、ウィンドウのサイズがいつ変わるかです。 RootLayoutPanelウィンドウ サイズ変更イベントをリッスンします。それを聞くと、すべての子に「ねえ、ちょうどサイズが変わったのかもしれません。チェックしてみてください」と伝えます。次に、これらの子供たちはすべて、自分の子供たち全員に、「ねえ、みんな、サイズを確認してください。違うかもしれません」と言うはずです。

そう。AbsolutePanel実装するProvidesResizeものは、何らかの方法でこのプロセスに接続する必要があります。に追加すると、実装RootLayoutPanelすることでメッセージを取得できます。チェーンに追加していない場合は、何らかの方法でサイズ変更情報を自分で見つける必要があります。ウィンドウ サイズ イベントをリッスンするか、レイアウトで何か他の変更があったことがわかっている場合にサイズ計算をトリガーすることができます。あなたが望むものなら、なんでも。残念ながら、とのウィジェットが までずっと連続していない限り、これを行うことはできません。RequiresResizeRootLayoutPanelRequiresResizeProvidesResizeRootLayoutPanel

于 2013-02-06T21:24:28.153 に答える
1

これに似たことができます

于 2013-02-07T03:00:16.587 に答える