我在GWT中尝试使用LayoutPanel的一些示例。我尝试将一个layoutpanel(大小为100%,100%)放到ScrollPanel上,而ScrollPanel又连接到rootlayoutPanel。虽然我指定的高度是100%,但它没有显示要在rootlayoutpanel中填充的layoutpanel。即使我将一个小部件添加到layoutpanel,它在设计器的视图中也不可见。我可以通过在设计器视图上显式拖动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");
为什么我会看到这种行为?有什么解释吗?
答案 0 :(得分:7)
布局面板可能很棘手。 LayoutPanels基本上是绝对面板,适用于整页Web应用程序。要使其工作从根面板向下(或从调用resize且具有固定大小的面板)的所有面板必须具有RequiresResize
。在你的情况下(除了在你的例子中你将lp而不是sp添加到rootpanel中的错误,但我假设你想要添加sp),你在RootPanel和LayoutPanel之间放置了一个非LayoutPanel,这打破了布局流程和因此,LayoutPanel lp无法自动调整大小。 LayoutPanel没有高度/宽度。
然而,将ScrollPanel与LayoutPanels一起使用是行不通的.LayoutPanel的整个想法是根据它的父级大小派生它的大小,但是在ScrollPanel内部的大小不相关,所以大小不一致无法设置LayoutPanel。