GWT CSS,Layout和LayoutPanel?

时间:2012-10-30 23:49:57

标签: java css gwt layout user-interface

我正在尝试构建一个外观漂亮的GWT面板(我的第一个)并且我很难决定如何处理它的布局。

根据Layout Javadoc

  

用于布置容器元素及其子元素的辅助类。

LayoutPanel Javadoc

  

使用Layout类将子项放在任意图层中的面板。

所以看起来你可以:

  • 扩展ComplexPanel并使用Layout来管理其布局;或
  • 使用似乎内置此功能的LayoutPanel;或
  • 只需将元素添加到HTMLPanel并使用CSS执行所有定位/布局

我不是百分百肯定,但这感觉就像你有这些选项(可能还有其他选项)因为它们在不同情况下相互提供优势,或者因为GWT API发生了很大的变化而且更新的布局方法已经随着时间的推移增加了。

如果是前者,那么安全性和性能是我唯一的优先事项,所以我要问:是一种比其他方法更高效和/或更安全的方法?如果是后者,那么哪种方法是GWT最新且最鼓励的?在我看来,最大的控制就是为CSS留下一切,而根本不使用Layout / LayoutPanel

2 个答案:

答案 0 :(得分:1)

LayoutPanel使用绝对定位,它还为其子项提供大小。我喜欢将它用于我最外面的布局容器,因为它占用整个浏览器窗口并在调整浏览器窗口大小时调整其子项的大小。

对于内部小部件(例如菜单,主区域),许多人喜欢使用VerticalPanel和Horizo​​ntalPanel(或者甚至是LayoutPanel)来简化它们。我避免使用这些面板,因为它们提供严格的基于表格的布局。我更喜欢使用HTMLPanel或FlowPanel,并通过CSS实现所需的布局。

请注意,在讨论不同面板的优缺点时,我不会使用“旧”或“新”属性。它们都转换为标准HTML。如果你对CSS很熟悉(许多开发人员不熟悉),那么你应该尽可能多地使用CSS,因为这是浏览器优化所要做的,并且因为你可以构建更流畅,一致和面向未来的(用它来更容易改变布局。

答案 1 :(得分:0)

您正在构建什么样的应用程序?

  • 您是否需要在面板之间使用“用户定位分割器”?
  • 您需要单独的滚动面板吗?

如果没有,请坚持使用CSS。

从HTML / CSS模型开始,然后将其转换为GWT UiBinder文件。特别是在responsive web design时,你可以从像Twitter Bootstrap这样的现成CSS框架开始,获得巨大的开端。