18

我想要 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 更新

我尝试将 RootPanel 的宽度和高度设置为 100%,但仍然无法正常工作。不过感谢您的建议,这似乎可能会奏效。还有什么建议吗??

4

8 回答 8

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);
于 2009-06-06T02:23:35.237 回答
13

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

于 2012-05-23T15:44:59.970 回答
0

我认为您需要在拆分的左侧和/或右侧放置一些东西(split.setLeftWidget(widget),split.setRightWidget(widget)或split.add(widget),它将首先添加到左侧,然后右侧),以便显示任何内容。

于 2008-09-17T19:59:27.837 回答
0

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

于 2008-09-18T00:00:28.927 回答
0

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

split.setWidth("100%");
split.setHeight("100%");
于 2008-09-18T21:13:13.970 回答
0

DecoratorPanel的文档说:

如果设置 DecoratorPanel 的宽度或高度,则需要将 middleCenter 单元格的高度和宽度设置为 100%,以便 middleCenter 单元格占用所有可用空间。如果不设置 DecoratorPanel 的宽度和高度,它将紧紧包裹其内容。

于 2008-09-19T18:01:14.270 回答
0

问题是 DecoratorPanel middleCenter 单元格将默认填充您的内容,而 SplitPanel 不允许“100%”样式大小设置。做你想做的事,在你的 CSS 上适当地设置表格的样式:

.gwt-DecoratorPanel .middleCenter { 高度:100%; 宽度:100%;}

于 2009-01-18T23:38:42.003 回答
0

对我来说,如果我只是将宽度设置为

panel.setWidth("100%");

该面板是一个 VerticalPanel,它只是随机大小,我不知道它来自哪里。但是在我添加以下行之后,@Ben Bederson 的评论对我来说效果很好:

panel.setWidth(Window.getClientWidth() + "px");

仅此而已,没有别的。谢谢

于 2015-07-21T10:03:42.077 回答