代码之家  ›  专栏  ›  技术社区  ›  JP Richardson

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

  •  18
  • JP Richardson  · 技术社区  · 16 年前

    我想要一个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);
        }
    
    }
    

    对于前面的代码片段,什么也不会显示。是否缺少方法调用?

    谢谢。


    2008年9月17日20:15更新

    我在每边都放了一些按钮(明确地设置它们的大小),但仍然不起作用。我真的很惊讶没有像FillLayout类、SetFillLayout方法、SetDockStyle(dockStyle.fill)之类的。也许不可能?但对于像GWT这样受欢迎的公司,我认为这是可能的。

    2008年9月18日14:38更新

    我已经尝试过将根面板的宽度和高度设置为100%,但仍然不起作用。不过,谢谢你的建议,这似乎是可行的。还有什么建议吗??

    8 回复  |  直到 16 年前
        1
  •  19
  •   chad luo    8 年前

    谷歌在其常见问题解答中回答了你的主要问题: 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);
    
        2
  •  13
  •   Brad    13 年前

    本的回答很好,但也过时了。在GWT1.6中,需要一个调整大小的处理程序,但现在我们的位置是2.4。你可以使用 DockLayoutPanel 使内容垂直填充页面。见 sample mail app ,使用此面板。

        3
  •  0
  •   Mike Monette    16 年前

    我认为您需要在拆分(split.setleftwidget(widget)、split.setrightwidget(widget)或split.add(widget)的左侧和/或右侧放置一些内容,以便显示任何内容。

        4
  •  0
  •   unknown (yahoo)    16 年前

    在添加小部件之前,尝试将rootpanel的宽度和/或高度设置为100%。

        5
  •  0
  •   Drejc    16 年前

    面板自动调整到最小可见宽度。因此,必须将添加到rootpanel的每个面板的大小调整为100%,包括splitpanel。rootpanel本身不需要调整大小。所以尝试:

    split.setWidth("100%");
    split.setHeight("100%");
    
        6
  •  0
  •   jgindin    16 年前

    文件 DecoratorPanel 说:

    如果设置装饰面板的宽度或高度,则需要将中间单元格的高度和宽度设置为100%,以便中间单元格占据所有可用空间。如果不设置装饰面板的宽度和高度,它将紧紧地包装其内容物。

        7
  •  0
  •   Renato Mangini    16 年前

    问题是,decoratorpanel middlecenter单元格默认情况下会严格填充内容,而splitpanel不允许“100%”样式大小设置。 要执行所需操作,请在CSS上适当设置表的样式:

    .GWT装饰板.中间中心{ 身高:100%; 宽度:100%; }

        8
  •  0
  •   Rafael Capretz    9 年前

    对我来说,如果我把宽度设置为

    panel.setwidth(“100%”);

    面板是一个垂直面板,它只是有一个随机大小,我不知道它来自哪里。但是@ben-bederson的评论在我加上这句话后对我很有效:

    panel.setwidth(window.getClientWidth()+“px”);

    就这个,没别的了。谢谢