我有这段代码
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
答案 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
可以移植到所有类型的面板。