5

レコードのリストがあり、各レコードには設定ウィンドウを開くボタンがあります。また、論理的な部分が多く、各部分にはボタン付きのレコードがいくつかあります。

したがって、ボタンをクリックするとダイアログ ウィンドウが表示されますが、このボタンがページの下部にある場合 (ボタン付きの 300 レコードとします)、ダイアログ ウィンドウが上部に表示されます。その結果、このウィンドウを見つけるために上にスクロールする必要があります (ブラウザーの境界線の後ろに表示されることがあります)。

または、何かを構成し、ページを下にスクロールして各オプションを入力し、最後に構成を保存しますが、一部のフィールドが正しく入力されず、警告ポップアップウィンドウが表示されます...ページのどこかにあるが、ポインターの近くにないか、ポインターの近くにない.現在のページの真ん中。

すべてのダイアログ ウィンドウは DialogBox から継承されているため、super.show() と super.center() を使用していますが、思いどおりに動作しません。

小さな情報追加: 一部のダイアログ ウィンドウはサーバーからデータを受信し、すべてのデータが受信されると残りのウィンドウが表示されます。これにより、ウィンドウが間違った場所に表示されることがあると思われます。

4

3 に答える 3

6

ダイアログ ボックスを中央に配置した後で内容を編集すると、中央に配置されていないように見えることは間違いありません。この問題を解決するために、コンテンツがロードされた後にセンターに電話しました。その間、ローディングスピナーか何かを表示できます。

場合によっては、追加したウィジェットのサイズをすぐに計算できないことがあります。残念ながら、これに対処する最善の方法は、ウィジェットを追加してから実行することでした

Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
    public void execute() {
        dialogBox.center();
    }
});  

(チェックされていないコード)

これは非常に一般的なのでscheduleCenter、DialogBox クラスに呼び出されるメソッドを追加しました。

センターを複数回コールすることもできます。そのたびにセンタリング計算が再実行されます。これにより、少しのけいれんが発生します。ぎくしゃくしたくない場合は、内部ウィジェットのサイズを明示的に設定する必要があります。

DialogBox dialogBox = new DialogBox();
dialogBox.add(myWidgetWhichWillLoadDataLater);
myWidgetWhichWillLoadDataLater.addStyleName(styleNameWhichSetsSizeExplicitly)
dialogBox.center();

myWidgetWhichWillLoadDataLater.setHeight("300px") などを呼び出すこともできます。

于 2013-01-09T13:29:40.037 に答える
1
DialogBox box = new DialogBox();
RootLayoutPanel.get().add(box);
RootLayoutPanel.get().setWidgetBottomHeight(box, 0, null, 0, null);
box.center();
box.show();

setWidgetBottomHeight() メソッドを使用して正確に配置します。

于 2013-01-09T09:39:41.733 に答える
0
DialogBox box = new DialogBox();
//Populate the box
box.center()
于 2013-01-09T12:10:39.327 に答える