2011-07-13 16 views

答えて

1

死点がユーザーのための運動のために残されますが、キーコンポーネントはWindow.getScrollTop()とWindow.getScrollLeft()

1

標準center()メソッドは、あなたが望むことをしません。だから、自分で位置を計算しなければならない。ポップアップに実際に表示される前にサイズがないという大きな問題が1つあります。 DOM要素がDOMに完全にアタッチされるまで、DOM要素のサイズを照会することはできません。ポップアップのサイズを取得するには、GWTポップアップクラスを継承し、onLoad()メソッドをオーバーライドする必要があります。このような何かを試してみてください:

public class CenteredDialogBox extends DialogBox { 

    private Widget _parent; 

    public CenteredDialogBox(Widget parent) { 
     _parent = parent; 
    } 

    @Override 
    public void onLoad() { 
     super.onLoad(); 

     int parentMiddle = _parent.getAbsoluteLeft() + _parent.getOffsetWidth()/2; 
     int popupLeft = parentMiddle - getOffsetWidth()/2; 
     int parentCenter = _parent.getAbsoluteTop() + _parent.getOffsetHeight()/2; 
     int popupTop = parentCenter - getOffsetHeight()/2; 

     setPopupPosition(popupLeft, popupTop); 
    } 

} 
+0

それは、これがあるようには思えないです親ウィジェットの量が現在スクロールされている位置よりも上にあることを考慮に入れるか、何か不足していますか? – danb