com.google.gwt.user.client.ui.AbsolutePanelにProvidesResizeインターフェイスを実装しようとしました。次に、想定される子に RequiresResize を実装しましたが、メソッド onResize() の呼び出しに失敗したか、取得できなかったようです:(
だから私の質問は... AbsolutePanel 子ウィジェットのサイズが変更されたかどうかをキャッチする方法と、それは可能ですか?
PS GWT 2.2/2.3
com.google.gwt.user.client.ui.AbsolutePanelにProvidesResizeインターフェイスを実装しようとしました。次に、想定される子に RequiresResize を実装しましたが、メソッド onResize() の呼び出しに失敗したか、取得できなかったようです:(
だから私の質問は... AbsolutePanel 子ウィジェットのサイズが変更されたかどうかをキャッチする方法と、それは可能ですか?
PS GWT 2.2/2.3
パネル自体がRequiresResize
インターフェースを実装し、onResize()
メソッドに次のようなことをさせることができます ( DeckLayoutPanelからコピー):
public void onResize() {
for (Widget child : getChildren()) {
if (child instanceof RequiresResize) {
((RequiresResize) child).onResize();
}
}
}
パネルをウィジェットの子にするProvidesResize
と、一連の onResize() 呼び出しがパネルを介してパネルの子に伝播するはずです。
HTML は、何かがいつサイズを変更したかを教えてくれません。主要なバマー。
あなたが知ることができるのは、ウィンドウのサイズがいつ変わるかです。 RootLayoutPanel
ウィンドウ サイズ変更イベントをリッスンします。それを聞くと、すべての子に「ねえ、ちょうどサイズが変わったのかもしれません。チェックしてみてください」と伝えます。次に、これらの子供たちはすべて、自分の子供たち全員に、「ねえ、みんな、サイズを確認してください。違うかもしれません」と言うはずです。
そう。AbsolutePanel
実装するProvidesResize
ものは、何らかの方法でこのプロセスに接続する必要があります。に追加すると、も実装RootLayoutPanel
することでメッセージを取得できます。チェーンに追加していない場合は、何らかの方法でサイズ変更情報を自分で見つける必要があります。ウィンドウ サイズ イベントをリッスンするか、レイアウトで何か他の変更があったことがわかっている場合にサイズ計算をトリガーすることができます。あなたが望むものなら、なんでも。残念ながら、とのウィジェットが までずっと連続していない限り、これを行うことはできません。RequiresResize
RootLayoutPanel
RequiresResize
ProvidesResize
RootLayoutPanel
これに似たことができます