2013-01-11 67 views
4

我使用AbsolutPanel作为主面板。我将另一个AbsolutPanel作为标题添加到主面板。 现在我添加一个ScrollPanel到主面板。 ScrollPanel在另一个面板上包含30个按钮。滚动时最后一个按钮没有完整显示。GWT ScrollPanel未显示完整内容

如果我删除标题AbsolutPanel一切都显示 - 如果我增加标题面板的高度显示较少。 包含VerticalPanel的ScrollPanel的可滚动区域与ScrollPanel外部的标题面板的高度正好减小。 如果我为主面板使用“Overflow.SCROLL”,我可以滚动到verticalPanel的结尾,但在这种情况下,标题面板也会滚动。

非常感谢每一个帮助 - 谢谢!

要重现这个问题,我做了以下测试:

AbsolutePanel main = new AbsolutePanel(); 
RootLayoutPanel.get().add(main); 
main.setSize("100px", "100%"); 

AbsolutePanel header = new AbsolutePanel(); 
main.add(header); 
header.add(new Label("HEADER")); 

VerticalPanel content = new VerticalPanel(); 
ScrollPanel scroll = new ScrollPanel(content); 
scroll.setSize("100px", "100%"); 
main.add(scroll); 

for (int i = 0; i < 30; i++) 
    content.add(new Button("Button :" + i)); 
+1

如果您从下面的答案中找到了解决方案,请接受并提出答案。如果你有自己的答案,把它放下并接受它。这将有助于其他正在寻找相似类型问题的答案的用户。 –

回答

0

你VerticalPanel是基于一个表,试图填补父容器的100%。不要认为你的布局是一个好方法。有关布局,请检查https://developers.google.com/web-toolkit/doc/latest/DevGuideUiPanels

我建议您使用DockLayoutPanel来创建100%高度布局的标题。如果您开始在面板名称中使用[布局]面板,则不要使用VerticalPanel。他们是Div的。如果您不确定浏览器如何处理它,那么不要混合div和表是很重要的。

+0

感谢您的回答! 我没看过这篇文章,我试图只使用布局面板。最初的测试使用AbsolutPanel而不是VerticalPanel,而且我确实有完全一样的。 – user1970457

+0

为什么你想使用Absolute面板作为容器。当前的浏览器行为完全正确。解决这个问题的唯一技巧就是使用负面的CSS边界(标题的高度)进行滚动。或者你可以使用绝对位置。但最好允许做到gwt引擎。 –

+0

我现在使用DockLayoutPanel作为主面板,其余部分使用FlowPanel - 这很好地工作,而且基于div的组件与基于网格的组件相比,大型内容的滚动速度更快。 非常感谢您的回答! – user1970457

5

由于您正在使用绝对面板,垂直面板和滚动面板的组合,因此它们都不是布局面板。因此,您需要将滚动面板的高度看到某个确定的高度,而不是以百分比表示。

代码

scroll.setSize("100px", "100%"); 

更改为

scroll.setSize("100px", "500px"); 

而且TADA,它的作品,你会得到一个卷轴。