Вы можете оставить свой 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
, она переносима на все типы панелей.