0

所有对话窗口都可以移出屏幕(水平或垂直,没关系)。当这个窗口在屏幕后面时,可以继续拖动它,屏幕的内容就会移动。

听起来很难理解,但最后看起来是这样的: 在此处输入图像描述

以下更改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;
}

将对话框窗口移到那里时,不会出现垂直和水平滚动条。但是如果有一个比主屏幕更大的对话窗口,滚动条也不会出现——这是另一个问题。

如何防止对话框窗口移出屏幕(快速示例,谷歌驱动器中的对话框窗口 - 它们只在屏幕的可见部分移动)?

4

1 回答 1

0

endDragging我通过覆盖DialogBox 的方法找到了我正在寻找的解决方案。这里是:

@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,以防止窗口完全移出屏幕。

于 2013-10-24T23:43:24.217 回答