1

gwt で uiobject のオフセット幅を取得したい。ただし、この値は次のように異なります。

  1. uiobject がアタッチされているかどうか?
  2. 相対的なcssがどこにロードされたかどうか?
  3. uiobject のサイズは onload コールバックで変更される場合があります。
  4. ...

したがって、特にFlowPanel、Label、InlineLabelなどのこの値を取得したい場合は複雑になります。サイズは動的に計算されます。

私の質問:いつ、またはどのようにオフセット幅を適切に取得するのですか?

4

1 に答える 1

3

ページが完全にレンダリングされた後にのみ、正しいサイズを取得できます。そうしないと、値がゼロになります。通常、次の 2 つの使用例があります。

(A) ビューをレンダリングするようブラウザに指示します。次に、Scheduler を使用して、サイズを確認する前に、ブラウザーがレンダリングを完了していることを確認します。

Scheduler.get().scheduleDeferred(new ScheduledCommand() {
    @Override
    public void execute() {
        int width = myPanel.getOffsetWidth();
        // do something with this width
    ]
]

(B) ウィンドウにサイズ変更ハンドラーをアタッチします。ユーザーがブラウザのウィンドウ サイズを変更すると、すべての幅と高さが変わる可能性があります。ResizeHandler でスケジューラを使用する必要はありません。ブラウザーは、ResizeHandler を呼び出す前にページの再レンダリングを完了します。

于 2012-09-11T14:14:42.040 に答える