所有对话框窗口都可以移出屏幕(水平或垂直,无关紧要)。当此窗口位于屏幕后方时,可以继续进一步拖动它,屏幕内容将移动。
这听起来很难理解,但最后它看起来像这样:
css
中的以下更改无济于事:
body {
...
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
overflow-y: hidden;
overflow-x: hidden;
...
}
html {
overflow-y: hidden;
background-color: transparent;
}
移动对话框窗口时,不会出现垂直和水平滚动条。但如果有一个比主屏更大的对话框窗口,滚动条也不会出现 - 这是另一个问题。
如何防止对话窗口移出屏幕(快速示例,谷歌驱动器中的对话框窗口 - 它们只在屏幕的可见部分移动)?
答案 0 :(得分:0)
我通过覆盖DialogBox的endDragging
方法来寻找解决方案。这是:
@Override
protected void endDragging(MouseUpEvent event)
{
//Move dialog window behind top border
if(this.getAbsoluteTop() < 0) {
this.setPopupPosition(this.getPopupLeft(), 0);
}
//Move dialog window behind bottom border
if(this.getAbsoluteTop() > (Window.getClientHeight() - this.getOffsetHeight())) {
this.setPopupPosition(this.getPopupLeft(), Window.getClientHeight() - this.getOffsetHeight());
}
//Move dialog window behind left border
if(this.getAbsoluteLeft() < 0) {
this.setPopupPosition(0, this.getPopupTop());
}
//Move dialog window behind right border
if(this.getAbsoluteLeft() > (Window.getClientWidth() - this.getOffsetWidth())) {
this.setPopupPosition(Window.getClientWidth() - this.getOffsetWidth(), this.getPopupTop());
}
super.endDragging(event);
}
当对话框移出屏幕时,鼠标释放后会出现在屏幕的可见部分。可以改进它并覆盖continueDragging
以防止窗口完全离开屏幕。