GXT 3 ContentPanel自动高度或FillLayout

时间:2012-10-26 20:19:56

标签: java gwt gxt

我无法让ContentPanel获取BorderLayoutContainer中的所有可用高度。

在版本2.x中,它与setLayout(new FillLayout());一样简单,但它不再适用于GXT 3.0.x.

为了清楚我的问题,我从这里GXT 3 demo采取了这个例子, 这是它应该看起来的样子:Border layout demo 但是当示例中的相同确切代码被复制到我的项目中时,它看起来像这样: same thing copied to my project

布局似乎被打破了。它在Chrome 22.0.x和Firefox 16.0.1中呈现相同的效果。 我使用GWT 2.4和GXT 3.0.1。 我的html页面包含

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<link rel="stylesheet" type="text/css" href="modeluname/reset.css" />

1 个答案:

答案 0 :(得分:3)

Explorer正在分配一个大小,可能是一个错误,因为它使示例不那么便携。大小是从父级(包含Demo和Source的选项卡面板)分配的,而后者又从父级(主选项卡面板)获取,依此类推。要解决这个问题,请务必设置大小。

通常,您不希望在根小部件上设置大小 - 您只是希望它始终适合浏览器中的可用空间。这意味着您要将所有内容添加到视口。在http://www.sencha.com/examples/#ExamplePlace:borderlayout%28uibinder%29的onModuleLoad:

的源代码工作
public void onModuleLoad() {
  Viewport viewport = new Viewport();
  viewport.setWidget(asWidget());
  RootPanel.get().add(viewport);
}

FitLayout而言,它实际上并不是必需的 - 任何只占一个孩子的容器在GXT 3中基本上都有一个FitLayout。2中出现的主要问题与3中相同 - 有些父母没有给孩子传递一个大小 - 他们需要以同样的方式解决。

您也可以选择退出默认的类似fitlayout的行为 - 在任何SimpleContainer(即ContentPanel,FramedPanel等)上调用setResize(false)。你通常会希望这个是默认的。