2011-05-28 43 views
2

我正在使用GWT 2.3並擁有我認爲是非常常見的佈局方案,但似乎得不到很好的支持 - 但我希望StackOverflow能告訴我我正在查看錯誤的問題。GWT:沒有RootLayoutPanel的可調整大小的佈局?

我正在使用佈局面板來安排我的應用程序。通常情況下,您將一個佈局面板放入RootLayoutPanel,它佔據整個瀏覽器窗口。

但是,我有一個網站頁眉和頁腳,需要在GWT之外。

問題是,正如docs明確指出的那樣,如果將佈局面板插入到頁面的任意HTML元素中而不是使用RootLayoutPanel,則會失去自動調整大小的行爲。您必須指定佈局面板的起始大小,然後手動執行任何大小調整。

我該如何實現這個手動調整大小?我很確定我可以跟蹤通過JavaScript調整HTML元素的大小,但是如何與GWT交互來告訴它新的大小?

謝謝!

回答

4

我會建議使用CSS絕對定位在HTML文件中:

<body style='position:absolute; top:10em; bottom:10em; left:0; right:0;> 
    <div id="top" style="position:absolute; left:0; top:-10em; bottom:0; right:0;"> 
    <p> THIS IS THE TOP BANNER </p> 
    </div> 

    <div id="bottom" style="position:absolute; left:0; top:100%; bottom:0; right:0;"> 
     <p> THIS IS THE BOTTOM BANNER </p> 
    </div> 

</body> 

你RootLayoutPanel將附加到身體,現在有一個10em的頂部和底部邊緣。

+0

非常好!比處理大小更容易。它工作得很好,謝謝。 – 2011-06-01 10:23:16

1

一個可能的純GWT解決方案。 您可以添加調整大小處理程序。在resize事件中,您可以獲取新的尺寸並調整組件大小。

GWT郵件示例預GWT 2.0郵件使用「手動」調整大小(但它有點過時)。

http://code.google.com/p/google-web-toolkit/source/browse/releases/1.7/samples/mail/src/com/google/gwt/sample/mail/client/Mail.java

基本上,你要掛鉤到窗口大小調整事件處理程序:

// Hook the window resize event, so that we can adjust the UI. 
Window.addResizeHandler(new ResizeHandler() { 
    public void onResizeA(int width, int height) { 
    // Adjust each immediate child widget by calling child.onResize() 
    } 
} 
+0

感謝您的信息。最後,我使用了CSS唯一的答案,但瞭解調整大小處理程序是很好的。 – 2011-06-01 10:24:21