Как я могу установить ширину макета vaadin и при этом сделать так, чтобы внутренние компоненты занимали столько места, сколько им нужно? - PullRequest
0 голосов
/ 01 июня 2018

Итак, у меня есть объект VerticalLayout.Без установки высоты - внутренние компоненты выглядят хорошо: каждая этикетка занимает как можно меньше места и остается сверху:

example with no height

Но, если я установлювысота макета до 400 пикселей с filesLayout.setHeight("400px"); - каждый из моих 3 ярлыков начинает занимать 33% пространства:

example with height

Я просто хочу, чтобы мои ярлыкизанять только необходимое количество места и мой VerticalLayout быть таким же, как я его установил.Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 01 июня 2018

VerticalLayout равномерно распределяет высоту между всеми компонентами.Таким образом, с 3 компонентами, вы получите 3 строки, каждая из которых составляет 33% от полной VerticalLayout высоты.

Вы можете манипулировать коэффициентами расширения с помощью .setExpandRatio(...)

, чтобы иметь все Labelsсверху нужно просто добавить "пустой" Label последний элемент к VerticalLayout и указать VerticalLayout использовать всю высоту "переполнения" для этой последней строки.

Label empty= new Label();
vl.addComponent(empty);
vl.setExpandRatio(empty, 1);

Установка его в 1 означает, что он займет 1 часть высоты переполнения.

Существует также этот сокращенный метод для выполнения обоих в одном вызове:

vl.addComponentsAndExpand(empty);

Это ответна ваш вопрос, но, вероятно, вы столкнетесь с этой проблемой:

Что мы делаем, когда содержимое VerticalLayout превышает доступную высоту?Но это другой вопрос, возможно, Panel будет лучшим контейнером, если вы хотите иметь полосы прокрутки.

...