2

GWT DialogBox を使用しているいくつかのポップアップを含むアプリケーションがあります。ポップアップのコンテンツは変更される可能性があるため、ポップアップのサイズをコンテンツに合わせる必要があります。最初は作成時にポップアップの高さを設定していましたが、コンテンツが大きくなると外側に表示されます。setHeight を削除すると、ポップアップは実際にはコンテンツに適応しますが、ポップアップを中央に配置するのに問題があります。コンテンツが変更されたときに popup.center() を呼び出しますが、高さを手動で設定したときのように実際には中央に配置されていません。

ウィンドウのサイズが変更されたときにポップアップを中央に配置するリスナーを追加したため、タイミングの問題だと思います。この場合、ポップアップは適切に中央に配置されています。

何か案は?

更新: 問題が見つかったと思います。ポップアップのコンテンツにはテーブルが含まれます。ResizeEvent は、テーブルのコンテンツが表示される前に発生するため、センタリングでは実際には空のテーブルのサイズが考慮されます。LoadingStateChangeHandler を追加して、ステータスが LO​​ADED のときに ResizeEvent を起動しようとしましたが、まだ起動が早すぎます。

4

1 に答える 1

2

問題は、popup.center() を呼び出したときに、ウィジェットの新しいサイズが計算されていないことです。ほとんどの人はこれを解決策として使用します:

// <- popup content changes here
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
    public void execute() {
        popup.center();
    }
});
于 2013-08-15T09:11:27.577 に答える