私はSplitLayoutPanelを持っています。ここで、子コンポーネントの1つはFlowPanelです。 FlowPanelには、サイズ変更が必要な子コンポーネントがあるので、FlowPanelを拡張して、ProvidesResizeとRequiresResizeを実装するResizableFlowPanelを作成しました。GWT:SplitLayoutPanelでonResize()を実行するときに新しいサイズを取得する方法は?
SplitLayoutPanelのスプリッタをドラッグすると、どのように子コンポーネントの新しいサイズを取得できますか?私はgetOffsetWidth()
とgetElement().getOffsetWidth
をFlowPanelから使ってみましたが、どちらも新しいサイズではなく元のサイズを返しています。
私は間違っていますか?ここで
は私がしようとしているFlowPanelサブクラスです:
class ResizableFlowPanel extends FlowPanel implements ProvidesResize, RequiresResize {
ResizableFlowPanel() {
super();
}
public void onResize() {
int li_width = this.getOffsetWidth();
int li_height = this.getOffsetHeight();
System.out.println("ResizableFlowPanel:: width : " + li_width + "; height: " + li_height);
for (Widget child : getChildren()) {
if (child instanceof RequiresResize) {
((RequiresResize) child).onResize();
}
}
}
}
私はちょうど私はむしろ、ブレークポイントを使用するよりも、スプリッタを移動すると、ログ内の値を見るためのSystem.outを追加しました。それで、元のサイズが引き続きgetOffsetHeight()によって返されることを確認しました。
これは、FlowPanelおよび子パネルに対してもonResize()が呼び出されていることを確認します。 SplitLayoutPanelのスプリッタをドラッグしている間に境界が変更されていないかどうかを確認するためにFlowPanelにボーダーを追加してみました。
これは、RequiresResizeを実装するSplitLayoutPanelの子が実際にサイズ変更されるのはなぜですか?または、なぜ新しい幅と高さでonResize()が渡されないのですか?
ウィジェットがドキュメントに添付されると、サイズ計算を実行するために、通常はウィジェット#onLoad()をオーバーライドします。http://google-web-toolkit.googlecode.com/svn/javadoc/2.1/com/google/gwt/ user/client/ui/Widget.html#onLoad() –