在GWT中创建流体面板以填充页面?

JP *_*son 18 java gwt

我想在GWT中使用一个面板来填充页面而不必实际设置大小.有没有办法做到这一点?目前我有以下内容:

public class Main  implements EntryPoint
{
    public void onModuleLoad()
    {
        HorizontalSplitPanel split = new HorizontalSplitPanel();
        //split.setSize("250px", "500px");
        split.setSplitPosition("30%");

        DecoratorPanel dp = new DecoratorPanel();
        dp.setWidget(split);

        RootPanel.get().add(dp);
    }

}
Run Code Online (Sandbox Code Playgroud)

使用前面的代码段,没有任何内容显示出来.有没有我失踪的方法电话?

谢谢.


更新于2008年9月17日20:15

我在每一侧放了一些按钮(明确设置了它们的大小),但仍然无效.我真的很惊讶,不像FillLayout类或setFillLayout方法或setDockStyle(DockStyle.Fill)或类似的东西.也许这不可能?但是,就像GWT一样受欢迎,我认为这是可能的.

更新于2008年9月18日14:38

我已经尝试将RootPanel的宽度和高度设置为100%,但仍然无法正常工作.谢谢你的建议,但似乎它可能会起作用.还有其他建议吗?

Ben*_*son 19

Google已在其常见问题解答中回答了您问题的主要部分:http: //code.google.com/webtoolkit/doc/1.6/FAQ_UI.html#How_do_I_create_an_app_that_fills_the_page_vertically_when_the_b

主要的一点是你不能将高度设置为100%,你必须做这样的事情:

final VerticalPanel vp = new VerticalPanel();
vp.add(mainPanel);
vp.setWidth("100%");
vp.setHeight(Window.getClientHeight() + "px");
Window.addResizeHandler(new ResizeHandler() {

  public void onResize(ResizeEvent event) {
    int height = event.getHeight();
    vp.setHeight(height + "px");
  }
});
RootPanel.get().add(vp);
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的答案,但现在GWT内置了这些功能.有关链接,请参阅我的回答. (2认同)

Bra*_*rad 13

本的答案非常好,但也过时了.在GWT 1.6中需要调整大小处理程序,但我们现在处于2.4.您可以使用DockLayoutPanel让您的内容垂直填充页面.请参阅使用此面板的示例邮件应用程序.

  • 以下是来源:http://code.google.com/p/google-web-toolkit/source/browse/trunk/samples/mail/src/com/google/gwt/sample/mail/client/Mail.java (2认同)