如何包装标签并将它们对齐到右侧

时间:2011-09-20 19:30:12

标签: user-interface gwt alignment

我有这段代码

HorizontalPanel hp = new HorizontalPanel();
hp.setWith("100%");
hp.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
hp.add(new Label("label 1"));
hp.add(new Anchor("anchor 1"));
hp.add(new Label("label 2"));
hp.add(new Anchor("Anchor 2"));
RootPanel.get().add(hp);

实际上显示

  

label1的........................................... anchor1 .. .................................... LABEL2 ............. ..................... anchor2

我其实想要像

这样的东西
  

label1 anchor1 label2 anchor2

是否有针对该解决方案或其他解决方案的布局? THX

2 个答案:

答案 0 :(得分:0)

尝试FlowPanel。它只是从左到右添加小部件,没有间距,并在行尾包装。

也许我错过了什么。它还有你想要的布局吗?

答案 1 :(得分:0)

您可以保留HorizontalPanel,但请尝试以下操作:

HorizontalPanel hp = new HorizontalPanel();
hp.setHorizontalAlignment(HasAlignment.ALIGN_LEFT);
hp.setSpacing(2); // 2 = number of pixels between each item
hp.add(new Label("label 1"));
hp.add(new Anchor("anchor 1"));
hp.add(new Label("label 2"));
hp.add(new Anchor("Anchor 2"));
RootPanel.get().add(hp);

您真正需要的只是一个setSpacing属性,因此它们并非真正附加到hp中的下一个单元格,而是删除hp.setWidth("100%")。如果您在UiBinder中执行此操作,则可以保持100%宽度并独立设置每个<g:cell>的宽度,从而提供更大的灵活性。

另外,我建议您使用HasAlignment而不是HasHorizontalAlignment和/或HasVerticalAlignment,除非HasAlignment可以移植到所有类型的面板。