所以我有一个VerticalLayout
的对象。
在没有设置高度的情况下-内部组件看起来不错:每个标签占用的空间尽可能少,并停留在顶部:
但是,如果我使用filesLayout.setHeight("400px");
将布局的高度设置为400px-我的3个标签中的每一个都开始占用33%的空间:
我只希望标签仅占用所需的空间,而我的VerticalLayout只能设置为该长度。请帮我。
最佳答案
VerticalLayout
在所有组件之间平均分配高度。
因此,使用3个组件,您将获得3行,每行占整个VerticalLayout
高度的33%。
您可以使用.setExpandRatio(...)
操作扩展比例
要使所有Labels
放在顶部,您只需要在Label
上添加一个“空” VerticalLayout
als最后一个元素,并告诉VerticalLayout
在最后一行使用所有“溢出”高度。
Label empty= new Label();
vl.addComponent(empty);
vl.setExpandRatio(empty, 1);
将其设置为1意味着它将占用溢出高度的1部分。
还有一个快捷方法可以在一个调用中完成这两个操作:
vl.addComponentsAndExpand(empty);
这是您的问题的答案,但是您可能会遇到以下问题:
当VerticalLayout的内容高于可用高度时,我们该怎么办?
但这是另一个问题,如果您希望有滚动条,也许面板是更好的容器。