【问题标题】:GWT LayoutPanel sizeGWT 布局面板大小
【发布时间】:2011-07-18 23:26:57
【问题描述】:

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

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");

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

【问题讨论】:

    标签: gwt


    【解决方案1】:

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

    但是,将 ScrollPanel 与 LayoutPanel 一起使用是行不通的。LayoutPanel 的整个想法是根据它的父大小得出它的大小,但在 ScrollPanel 内部,大小是不相关的,所以大小无法设置 LayoutPanel。

    【讨论】:

    • 我也遇到了这些问题。但是,推荐的方法是什么?有时我的内容确实比我的可用屏幕尺寸大,因此需要滚动。在这种情况下,最好的方法/做法是什么?
    • 在 LayoutPanel 中添加 ScrollPanel 就可以了。当用户调整浏览器的大小时,ScrollPanel 的可见空间会调整大小。 (实际父级调整大小和 ScrollPanel 调整大小的可用空间)。确保 ScrollPanel 的所有父级都是 RequireSize 面板。 ScrollPanel 的内容可能没有固定大小,而是随着内容的扩展而扩展。如果您想在 ScrollPanel 中使用 LayoutPanels,您需要以像素为单位设置面板的实际大小,您可能不知道/不想要。因此,您可能不想在 ScollPanel 中使用布局面板。
    • 感谢希尔布兰德。但是,为了使可滚动方面,我应该将布局面板定义为一个单独的类(以实现 PROVIDESRESIZE 接口)?我说的对吗?
    • 您可以使用 LayoutPanel 或 DockLayoutPanel 或任何其他 LayoutPanel 并添加 ScrollPanel。无需创建特定面板。只需添加 ScrollPanel,当浏览器窗口调整大小时,ScrollPanel 会自动调整大小。
    猜你喜欢
    • 2011-02-07
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多