我想在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%,但仍然无法正常工作。谢谢你的建议,但似乎它可能会起作用。还有其他建议??
答案 0 :(得分: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);
答案 1 :(得分:13)
答案 2 :(得分:0)
我认为你需要在分割的左侧和/或右侧放置一些东西(split.setLeftWidget(widget),split.setRightWidget(widget)或split.add(widget),这将首先添加到向左,然后向右),以便显示任何内容。
答案 3 :(得分:0)
在添加小部件之前,请尝试将rootpanel的宽度和/或高度设置为100%。
答案 4 :(得分:0)
面板会自动调整为可见的最小宽度。因此,您必须将添加到RootPanel的每个面板调整为100%,包括SplitPanel。 RootPanel本身不需要调整大小。所以试试:
split.setWidth("100%");
split.setHeight("100%");
答案 5 :(得分:0)
DecoratorPanel的文档说:
如果设置DecoratorPanel的宽度或高度,则需要将middleCenter单元格的高度和宽度设置为100%,以便middleCenter单元格占用所有可用空间。如果没有设置DecoratorPanel的宽度和高度,它将紧紧包裹其内容。
答案 6 :(得分:0)
问题在于,DecoratorPanel middleCenter单元格将默认填充您的内容,而SplitPanel不允许“100%”样式大小设置。 要做你想做的事,在CSS上适当地设置表的样式:
.gwt-DecoratorPanel .middleCenter { 身高:100%; 宽度:100%; }
答案 7 :(得分:0)
对我来说,如果我只设置宽度
,它就不起作用panel.setWidth( “100%”);
面板是一个VerticalPanel,它只是随机大小,我不知道它来自哪里。但是,在我添加了这条线后,@ Ben Bederson所评论的内容对我来说非常有用:
panel.setWidth(Window.getClientWidth()+“px”);
就是这样,没有别的。感谢