根据内容调整GWT面板的高度

时间:2012-08-08 07:26:21

标签: gwt

我们有许多屏幕,其中使用不同类型的GWT面板。

许多屏幕的一个常见问题是,内容大小是在运行时派生的。因此,如果我为面板(垂直/水平/ DockPanel)定义高度,并且在面板内添加任何新组件或内容更多时,面板高度保持不变。所以我们无法看到内容。 UI外观变得最糟糕。

我们如何处理高度问题?当屏幕中的内容发生变化时,我们是否必须手动编码以调整每个面板/窗口小部件的高度。这不是一种非常糟糕的编码方式吗? 此外,现在我们在某些地方有数据网格,如果没有记录很少,我们会看到数据网格下面留下一个巨大的空间,不知道我们如何处理这些情况呢?

根据评论更新了以下几个示例: 你是说当我们知道内容垂直增长时,我们总是可以选择FlowPanel。因为,我们使用了一些屏幕垂直面板/水平面板,当用户点击某些内容时,会添加和显示新字段。因此垂直面板/水平面板高度自动无法调整。另一个例子是我们在Dock布局面板内容区域内有主垂直面板,并且内部有一些小部件的内容可能会有所不同。那么现在如果我使用FlowPanel来调整大小不同的内容,那么外面板呢?会调整吗?再说一下我们使用的面板类型 - Dock Layout Panel与固定的页眉,页脚,左侧菜单和内容区域一起使用。内容区域中使用滚动面板。我们所有不同的小部件都在里面,这是水平/垂直/ datagrids..etc的混合和匹配。

1 个答案:

答案 0 :(得分:9)

在GWT(和HTML)中,您既可以设置面板的高度,也可以让它自然展开。一般来说,一旦设定了某物的高度,就会失去让它自然膨胀的能力。

GWT中的某些面板隐式设置自己的高度(或要求您设置其高度),因此对于动态大小的内容来说永远不是好选择。例如,LayoutPanels和ScrollPanels永远不会动态调整,并希望您以编程方式提供大小信息。另一方面,FlowPanels和HTMLPanels非常适合动态高度,而不是明确地设置它们的高度。

如果你想要一个滚动面板,当然你必须定义它应该有多高 - 它怎么知道什么时候滚动以及何时变大?但是,您可以将一个FlowPanel(自动扩展)放在ScrollPanel(您已设置为800px或其他)中。然后,当您向FlowPanel添加内容时,它将在ScrollPanel内部展开。然后,用户可以滚动查看FlowPanel的不同部分。

故障排除提示:

  1. 确保您没有在要自然展开的面板上设置高度
  2. 确保您在面板上设置应始终具有相同尺寸的高度
  3. 尝试使用FlowPanels而不是Horizo​​ntal / VerticalPanels
  4. * LayoutPanels和AbsolutePanels总是需要显式大小,并且在添加更多内容时永远不会动态增长。您希望随内容增长的任何内容都应该是FlowPanel或HTMLPanel。