2011-05-28 73 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