【问题标题】:GWT - docklayout panel in UiBinderGWT - UiBinder 中的停靠布局面板
【发布时间】:2012-10-05 18:03:51
【问题描述】:
我需要在 UiBinder 中实现一个 DockLayoutPanel。我知道我们可以在 UiBinder 中使用 等来做与 DockLayoutPanel.addNorth()、DockLayoutPanel.addWest() 一样的事情。
我的问题是,Uibinder 中有什么东西可以和 DockLayoutPanel.insertNorth()、DockLayoutPanel.insertWest() 做同样的事情吗?
另外,有没有官方文档可以搜索 Uibinder 命令,这样我就可以知道我可以用什么来 uibinder?
谢谢。
【问题讨论】:
标签:
java
gwt
uibinder
docklayoutpanel
【解决方案1】:
这是您要查找的内容:
<g:FlowPanel>
<g:DockLayoutPanel ui:field="myPanel">
<g:west size="300">
<g:VerticalPanel ui:field="mySideBar" />
</g:west>
<g:center>
<g:VerticalPanel ui:field="myMainPanel" />
</g:center>
</g:DockLayoutPanel>
</g:FlowPanel>
【解决方案2】:
DockLayoutPanel 的add*() 和insert*() 方法都用于以编程方式运行时添加子面板。 UiBinder 不会做与那些方法“相同的事情”。您直接使用 UiBinder 的工作只发生在设计期间。
UiBinder 是一个静态布局工具,在初始化后立即为您的小部件提供“快照”,一种描述元素相对于彼此的定位的方式。
您使用 UiBinder 指定的小部件可以在初始化后以编程方式进行操作。假设您指定了以下布局:
<g:DockLayoutPanel ui:field="myDockPanel">
<g:north size="100">
<g:Label ui:field="northernLabel">I am far north</g:Label>
</g:north>
<g:center>
<g:Label ui:field="centerLabel">Center Stage</g:Label>
</g:center>
</g:DockLayoutPanel>
在你的视图初始化后运行的代码中你现在可以去:
myDockPanel.insertNorth(new Label("I am even farther north!"), 100.0, northernLabel);
另外,有没有官方文档可以搜索Uibinder
命令,以便我可以知道我可以为 uibinder 使用什么?
Google 开发指南section on declarative layout with UiBinder 是官方的,AFAIK。
【解决方案3】:
Ui:Binder 中没有“命令”。您可以使用小部件和 HTML 指定布局,并且可以为小部件设置各种属性(如类、宽度、高度、文本、标题、值等)。但是你不能告诉 Ui:Binder 在一种情况下插入一个小部件,而不是在另一种情况下插入它。您可以在您的应用代码中执行此操作。