GWT布局面板尺寸

GWT布局面板尺寸,gwt,Gwt,我尝试了一些GWT中的LayoutPanel示例。我尝试将大小为100%、100%的layoutpanel放置到滚动面板上,滚动面板依次连接到rootlayoutPanel。虽然我指定的高度是100%,但它没有显示要在rootlayoutpanel中填充的layoutpanel。即使我向layoutpanel添加了一个小部件,它在设计器的视图中也不可见。我可以通过在designer视图上显式拖动layoutpanel来查看它们。但是,这最终会迫使大小以像素为单位。为什么我会发现这种行为?代码如下

我尝试了一些GWT中的LayoutPanel示例。我尝试将大小为100%、100%的layoutpanel放置到滚动面板上,滚动面板依次连接到rootlayoutPanel。虽然我指定的高度是100%,但它没有显示要在rootlayoutpanel中填充的layoutpanel。即使我向layoutpanel添加了一个小部件,它在设计器的视图中也不可见。我可以通过在designer视图上显式拖动layoutpanel来查看它们。但是,这最终会迫使大小以像素为单位。为什么我会发现这种行为?代码如下:

RootLayoutPanel rp = RootLayoutPanel.get();

LayoutPanel lp = new LayoutPanel();

lp.setSize("100%","100%");

ScrollPanel sp = new ScrollPanel(lp);

rp.add(lp);
使用此代码,我只能将layoutPanel视为一行。我看不到布局面板覆盖的区域框。如果我尝试通过拖动手动更改高度,它会自动将layoutpanel的高度更改为像素:

lp.setsize("100%","500px");

为什么我会看到这种行为?有什么解释吗

布局面板可能很棘手。LayoutPanels基本上是绝对面板,用于全页web应用程序。要使其工作,从根面板向下或从调用resize并具有固定大小的面板开始的所有面板必须具有RequiresResize。在您的示例中,除了将lp而不是sp添加到根面板中的错误之外,我假设您打算添加sp,您在根面板和LayoutPanel之间放置了一个非LayoutPanel,这会中断布局流程,因此LayoutPanel lp无法自动调整大小。布局面板将没有高度/宽度


但是,将ScrollPanel与LayoutPanel一起使用是行不通的。LayoutPanel的整个想法是基于其父级大小导出其大小,但在ScrollPanel中大小不相关,因此无法设置LayoutPanel的大小。

我也遇到了这些问题。然而,推荐的方法是什么?有时我的内容确实比我可用的屏幕大,因此需要滚动。在这种情况下,最好的方法/实践是什么?可以将ScrollPanel添加到LayoutPanel。当用户调整浏览器大小时,ScrollPanel的可见空间将调整大小。实际调整父级大小,并调整ScrollPanel的可用空间大小。确保ScrollPanel的所有父级都是可调整面板大小的。ScrollPanel的内容可能没有固定的大小,但会随着内容的扩展而扩展。如果要在ScrollPanel中使用LayoutPanels,则需要设置面板的实际大小(以像素为单位),这可能是您不知道/不需要的。因此,您可能不想在ScollPanel中使用布局面板。谢谢Hilbrand。但是,为了实现可滚动特性,我应该将layoutpanel定义为一个单独的类来实现PROVIDESRESIZE接口?我说的对吗?您可以使用布局面板、DockLayoutPanel或任何其他布局面板并添加滚动面板。无需创建特定的面板。只需添加ScrollPanel,当浏览器窗口调整大小时,ScrollPanel将自动调整大小。