水平面板中的按钮不希望对齐

时间:2012-07-12 15:01:36

标签: java gwt

我有一个带3个按钮的水平面板:Back,Next和Cancel。我已经在右侧进行了水平对齐,但只有“下一步”和“取消”按钮遵循此对齐方式。

以下是代码:

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%");

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

这种对齐出了什么问题?面板宽度可能有问题吗?希望得到你的帮助,谢谢你。

2 个答案:

答案 0 :(得分:3)

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

请尝试以下操作:

buttons.setCellHorizontalAlignment(backButton, HasHorizontalAlignment.ALIGN_RIGHT);
buttons.setCellHorizontalAlignment(nextButton, HasHorizontalAlignment.ALIGN_RIGHT);
buttons.setCellHorizontalAlignment(cancelButton, HasHorizontalAlignment.ALIGN_RIGHT);

答案 1 :(得分: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);