1

我有一个带有 3 个按钮的水平面板:返回、下一步和取消。我已将水平对齐到右侧,但只有“下一步”和“取消”按钮遵循此对齐方式。

这是代码:

HorizontalPanel buttons = new HorizontalPanel();
buttons.setWidth("100%");

cancel = new Button("Cancel");
next = new Button("Next");
back = new Button("Back");

buttons.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
buttons.add(back);
buttons.setCellWidth(back, "98%");
buttons.add(nextBtn);
buttons.setCellWidth(next, "1%");
buttons.add(cancel);
buttons.setCellWidth(cancel, "1%");

问题在于这个面板宽度。但是如果我删除它,我所有的按钮都会左对齐。作为一种解决方法,我可以使用假按钮,它是不可见的,并且单元格宽度 = 97%,后退按钮的单元格宽度为 1%。但这不是我需要的,因为尽管这个隐形按钮消耗的内存很小,但它仍然是一个内存:)

这种对齐有什么问题?也许面板宽度有问题?希望得到您的帮助,在此先感谢您。

4

2 回答 2

3

Horizo​​ntalPanel 中有setCellHorizo ​​ntalAlignment()属性。有了它,您可以对齐它的小部件。

尝试以下操作:

buttons.setCellHorizontalAlignment(backButton, HasHorizontalAlignment.ALIGN_RIGHT);
buttons.setCellHorizontalAlignment(nextButton, HasHorizontalAlignment.ALIGN_RIGHT);
buttons.setCellHorizontalAlignment(cancelButton, HasHorizontalAlignment.ALIGN_RIGHT);
于 2012-07-13T07:04:42.580 回答
2

您可以使用 css 更轻松地实现这一点:

FlowPanel panel = new FlowPanel();
panel.setWidth("100%");

cancel = new Button("Cancel");
cancel.getElement().getStyle().setFloat(Float.RIGHT);
next = new Button("Next");
next.getElement().getStyle().setFloat(Float.RIGHT);
back = new Button("Back");
back.getElement().getStyle().setFloat(Float.RIGHT);

panel.add(back);
panel.add(nextBtn);
panel.add(cancel);
于 2012-07-12T21:17:11.280 回答