如何将Popup设置为始终在GWT的顶部可见

时间:2012-08-20 21:35:47

标签: gwt popup position

我有一个加载弹出窗口,我需要在页面顶部显示,即使用户向下滚动。

到目前为止我尝试的是将弹出位置设置如下

setPopupPosition(Window.getClientWidth()/2 , 0);

弹出窗口显示在绝对顶部。

3 个答案:

答案 0 :(得分:7)

如果从不同的角度查看情况,可以轻松解决这种情况:弹出位置不应该调整到页面 - 相反,页面应该在居中弹出窗口后滚动,例如:

final ScrollPanel scrollPanel = new ScrollPanel();
RootLayoutPanel.get().add(scrollPanel);
pagePanel = new FlowPanel();
scrollPanel.setWidget(pagePanel);
pagePanel.add(...);

现在将整个页面内容添加到pagePanel(而不是直接将它们添加到rootPanel)。

然后你可以创建这样的弹出窗口:

final PopupPanel popupPanel = new PopupPanel();
popupPanel.add(...);
popupPanel.center();

当窗口调整大小时,你仍然需要重新设置弹出窗口,但除此之外,弹出窗口将始终位于滚动页面前面的中心。

答案 1 :(得分:1)

要实现这一目标,您可以实施Window.addWindowScrollHandler。无论你做什么,它总会在最重要的位置。

DialogBox dialog = new DialogBox();
dialog.setWidget(...);
Window.addWindowScrollHandler(new ScrollHandler() {
    @Override
    public void onWindowScroll(ScrollEvent event) {
        dialog.setPopupPosition((Window.getClientWidth() - widthOfDialog) / 2, event.getScrollTop());
    }
});

希望这有帮助..谢谢..

答案 2 :(得分:0)

对我有用的解决方案是

 setPopupPosition(Window.getClientWidth()/2 , Window.getScrollTop());