2

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

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

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

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

4

1 回答 1

9

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

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

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

故障排除提示:

  1. 确保您没有在要自然展开的面板上设置高度
  2. 确保您在面板上设置的高度应始终相同
  3. 尝试使用 FlowPanels 而不是 Horizo​​ntal/VerticalPanels
  4. *LayoutPanels and AbsolutePanels always need explicit sizes and can never grow dynamically as you add more content. Anything you want to grow with content should probably be a FlowPanel or HTMLPanel.
于 2012-08-08T14:25:47.647 回答