我怎样才能设置 vaadin 布局的宽度并且仍然让内部组件根据需要占用尽可能多的 space?

How can I set width of vaadin layout and still have inner components take as much space as they need?

所以我有一个对象VerticalLayout。 没有设置高度 - 内部组件看起来很好:每个标签尽可能少 space 并保持在顶部:

但是,如果我使用 filesLayout.setHeight("400px"); 将布局高度设置为 400px - 我的 3 个标签中的每一个都开始占用 space 的 33% :

我只希望我的标签只占用所需数量的 space,而我的 VerticalLayout 的长度与我设置的一样长。请帮帮我。

VerticalLayout 在所有组件之间平均分配高度。 因此,对于 3 个组件,您将得到 3 行,每行占整个 VerticalLayout 高度的 33%。

您可以使用 .setExpandRatio(...)

来控制展开比率

要让所有 Labels 都在顶部,您只需添加一个 "empty" Labelals 最后一个元素到 VerticalLayout,并告诉 VerticalLayout使用所有 "overflow" 高度到最后一行。

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

设置为1表示占溢出高度的1部分

还有一种快捷方式可以一次调用完成:

vl.addComponentsAndExpand(empty);

这是您问题的答案,但您可能会想到这个问题:

VerticalLayout的内容高于可用高度怎么办? 但这是另一个问题,如果您希望有滚动条,也许 Panel 会是更好的容器。