且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在GWT中创建一个流体面板来填充页面?

更新时间:2023-12-01 19:05:04

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(高度+px);
}
});
RootPanel.get()。add(vp);


I would like a panel in GWT to fill the page without actually having to set the size. Is there a way to do this? Currently I have the following:

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);
    }

}

With the previous code snippet, nothing shows up. Is there a method call I am missing?

Thanks.


UPDATE Sep 17 '08 at 20:15

I put some buttons (explicitly set their size) on each side and that still doesn't work. I'm really surprised there isn't like a FillLayout class or a setFillLayout method or setDockStyle(DockStyle.Fill) or something like that. Maybe it's not possible? But for as popular as GWT is, I would think it would be possible.

UPDATE Sep 18 '08 at 14:38

I have tried setting the RootPanel width and height to 100% and that still didn't work. Thanks for the suggestion though, that seemed like it maybe was going to work. Any other suggestions??

Google has answered the main part of your question in one of their FAQs: 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

The primary point is that you can't set height to 100%, you must do something like this:

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);