2013-01-11 108 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,它的作品,你會得到一個卷軸。