【问题标题】:Adjusting height of GWT Panels based on content根据内容调整 GWT Panels 的高度
【发布时间】:2012-08-08 07:26:20
【问题描述】:

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

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

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

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

【问题讨论】:

  • 在不知道您未提供的细节的情况下无法理解问题。你用的是什么面板?为什么你有固定的高度?一个简单的 FlowPanel 小部件的行为与 HTML <div/> 元素完全相同,因此它会随着内容垂直增长。
  • 我已经用你的答案更新了我的查询。可以请教吗?

标签: gwt


【解决方案1】:

在 GWT(和 HTML)中,您可以设置面板的高度或让它自然展开。一般来说,一旦你设置了某个东西的高度,你就失去了让它自然膨胀的能力。

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

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

故障排除提示:

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

【讨论】:

  • 非常感谢您的宝贵意见 :) 我正在根据您的建议更改屏幕面板,效果很好 :)
  • 好 :) 我记得突然明白了 GWT 中的布局是如何工作的,一切似乎都简单多了。
猜你喜欢
  • 2012-08-03
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
相关资源
最近更新 更多