如何将弹出窗口设置为在GWT的顶部始终可见

如何将弹出窗口设置为在GWT的顶部始终可见,gwt,popup,position,Gwt,Popup,Position,我有一个加载弹出窗口,我需要显示在页面顶部,即使用户向下滚动 到目前为止,我尝试的是如下设置弹出位置 setPopupPosition(Window.getClientWidth()/2 , 0); 弹出窗口显示在absolut顶部。如果从不同的角度查看,情况可以很容易解决:弹出窗口位置不应调整到页面-相反,页面应在居中弹出窗口后滚动,例如: final ScrollPanel ScrollPanel=new ScrollPanel(); RootLayoutPanel.get().add(s

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

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

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

弹出窗口显示在absolut顶部。

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

final ScrollPanel ScrollPanel=new ScrollPanel();
RootLayoutPanel.get().add(scrollPanel);
pagePanel=新的FlowPanel();
scrollPanel.setWidget(页面面板);
pagePanel.add(…);
现在将整个页面内容添加到
pagePanel
(而不是直接添加到rootPanel)

然后,您可以创建如下弹出窗口:

final-popupanel-popupanel=new-popupanel();
添加(…);
popupPanel.center();

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

对我有效的解决方案是

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

要实现这一点,您可以实现
Window.addWindowScrollHandler
。无论你做什么,它总是在你的头上

DialogBox dialog=newdialogbox();
setWidget(…);
addWindowScrollHandler(新的ScrollHandler(){
@凌驾
WindowsCroll上的公共无效(ScrollEvent事件){
setPoupposition((Window.getClientWidth()-widthOfDialog)/2,event.getScrollTop());
}
});

希望这有帮助。。谢谢。

在我的情况下,很难更改应用程序的布局。我认为您应该努力更改错误的布局。原因有二:一,。如果布局不能轻易改变,那就是误解。2.不好的工作会围绕一个错误的布局。OTOH,您首先需要了解什么是好的布局体系结构。如果你没有使用任何MVP,并且你的UI很复杂,那么它不是一个好的布局,因此也不是一个好的应用程序。我实际上使用的是MVP和UIBinder,所以更改布局不是问题。问题是我不想改变一些有用的东西。我已经找到了一个不涉及布局的简单解决方案。这里的
widthOfDialog
是对话框的实际宽度,大约为300。