У меня есть приложение Vaadin 8 с несколькими представлениями.
public class ViewName extends Panel implements View {
В качестве основного макета на панели используется VerticalLayout.
public ViewName() {
setSizeFull();
VerticalLayout mainLayout = new VerticalLayout();
setContent(mainLayout);
Тогда у меня есть много разных макетов (HorizontalLayout, GridLayout) или таких компонентов, как Label, добавляемых в качестве компонентов к mainLayout. Для HorizontalLayouts я часто делаю следующее, чтобы использовать полную ширину экрана:
hLayout.setWidth("100%");
У меня много иконок, сеток и т. Д. Все в порядке, пока я не изменяю размер окна.
Когда я изменяю размер окна до небольшого размера, я получаю беспорядок (значки, текст и т. Д. Друг на друге) и отсутствие горизонтальной полосы прокрутки. (Однако сетки получают горизонтальные полосы прокрутки.) Я пробовал много вещей, чтобы это исправить. Если я добавлю
mainLayout.setSizeFull();
или
mainLayout.setWidth("100%");
У меня уже беспорядок на большом экране. Я также попробовал CSS для mainLayout, как описано здесь . Я получаю несколько полос прокрутки, но ни одного для самого окна!
Единственный компонент, который правильно изменяет размер, - это метка, добавленная в mainLayout, например ::1010.
Label title = new Label("Some text",ContentMode.HTML);
title.setWidth(100, Unit.PERCENTAGE);
mainLayout.addComponent(title);
mainLayout.setComponentAlignment(title, Alignment.MIDDLE_CENTER);
Я также заметил, что что-то в GridLayout, кажется, остается на месте после изменения размера, но не видимо, так как у меня нет полосы прокрутки. Тем не менее, значки в HorizontalLayout попадают друг на друга.
Что не так? Пожалуйста, мне нужна общая инструкция о том, какой макет я должен использовать в качестве основного макета для моей панели просмотра, как определить размеры компонентов и как при необходимости получить ОДНУ горизонтальную полосу прокрутки для главного окна.