2

在我的页面上,我有一个默认隐藏的面板。必要时我可以通过显示myPanel.setVisible(true)。在此之后,窗口的高度增加并出现窗口滚动条。

问题是窗口不会自动滚动到底部,这是一种理想的行为。我该如何解决?我只想将我的页面滚动到底部。

我知道Window.scrollTo (LEFT, TOP)可以帮助我。但问题是我不知道如何计算页面相对于顶部的高度——我需要提供给这个方法的第二个参数。我真的尝试了很多方法:

Window.getClientHeight();
Document.get().getScrollHeight();
Document.get().getBody().getOffsetHeight();
Document.get().getBody().getAbsoluteBottom();

在隐藏面板变得可见后,其中的前两个不会更改其值。第二对给了我 0 和 8 (???) 值。

那么我该如何解决我的问题呢?

ps 如果情况有点不同,并且我有一个带有滚动条的 div,而不是窗口滚动条,是否可以通过编程将其滚动到底部?

4

5 回答 5

1

您可以使用setVerticalScrollPostion API 并设置滚动的位置

于 2013-02-05T04:04:29.970 回答
0

它是简单的 Panel 还是它的某个子类。

无论如何,首先尝试:

int top = myPanel.getAbsoluteTop();

然后滚动到与 top 聚合的某个值。

来自 API:

公共 int getAbsoluteTop()

获取对象的绝对顶部位置(以像素为单位),从浏览器窗口的客户区测量。

于 2013-02-04T15:03:09.733 回答
0

要向下滚动文档,您应该使用 Window 对象中的 scrollTo 方法,即:

Window.scrollTo(0, Window.getScrollTop() + Window.getClientHeight());
于 2014-11-06T09:07:04.950 回答
0

你实际上不需要知道页面的大小来滚动到它的底部。只需使用

Window.scrollTo(0, Integer.MAX_VALUE);

至少这一直对我有用。

于 2020-09-26T20:32:05.293 回答
-1

如果需要,您可以创建一个带有 id 的小部件句柄。例如 :widget.getElement().setId("scrollPanel");

然后,您可以使用它更简单地滚动小部件上的视图Document.get().getElementById("scrollPanelFooter").scrollIntoView();

于 2017-04-11T12:12:01.147 回答