2008-09-17 121 views
18

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

} 

在前面的代码片段中,什么也没有显示出来。有没有我缺少的方法调用?

谢谢。


UPDATE年09月17 '08 20:15

我把一些按钮,每边(显式设置其大小),并且仍然无法正常工作。我真的很惊讶没有像FillLayout类或setFillLayout方法或setDockStyle(DockStyle.Fill)或类似的东西。也许这是不可能的?但是像GWT一样受欢迎,我认为这是可能的。

UPDATE年09月18 '08在14:38

我已经尝试设置RootPanel宽度和高度为100%,并且仍然没有奏效。感谢您的建议,但似乎它可能会起作用。任何其他建议?

回答

19

谷歌已经回答了你的问题的主要部分在他们的常见问题之一: 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

这是一个很好的答案,但现在已有内置GWT的功能。查看我的答案了解一些链接。 – Brad 2012-05-23 15:45:41

0

我认为你需要把事情的分裂(split.setLeftWidget(部件),split.setRightWidget(部件)OR split.add(部件)的左侧和/或右,这将首先增加左边,然后右边),以便任何东西出现。

0

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

0

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

split.setWidth("100%"); 
split.setHeight("100%"); 
+0

Drejc, 感谢您的回复。我试着将SplitPanel尺寸和RootPanel尺寸都设置为100%。仍然没有运气。再次感谢。 – 2008-09-19 14:26:11

+0

设置您的CSS样式,以便面板边框可见。您将看到哪个面板需要调整大小。当我不知何故丢失面板时,这是我首选的故障排除方法,我不知道哪一个负责。 – Drejc 2008-09-21 17:04:01

0

DecoratorPanel文档说:

如果设置DecoratorPanel的宽度或高度,则需要将middleCenter单元的高度和宽度设置为100%,使中间的中心单元占据了所有的可用空间。如果你没有设置DecoratorPanel的宽度和高度,它会紧紧包裹它的内容。

0

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

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

13

本的回答非常好,但也过时了。 GWT 1.6中需要调整大小处理程序,但我们现在处于2.4。您可以使用让您的内容垂直填充页面。请参阅使用此面板的sample mail app

0

对于我来说,如果我只是设置像

panel.setWidth( “100%”)的宽度它不工作;

面板是一个VerticalPanel,它只是随机获得一个大小,我不知道它来自哪里。但是,在我添加该行后,@Ben Bederson评论为我工作得非常好:

panel.setWidth(Window.getClientWidth()+“px”);

就这样,没有别的。谢谢