Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置vaadin布局的宽度,并且仍然让内部组件占据所需的空间?_Java_Css_Sass_Vaadin_Vaadin8 - Fatal编程技术网

Java 如何设置vaadin布局的宽度,并且仍然让内部组件占据所需的空间?

Java 如何设置vaadin布局的宽度,并且仍然让内部组件占据所需的空间?,java,css,sass,vaadin,vaadin8,Java,Css,Sass,Vaadin,Vaadin8,因此,我有一个对象VerticalLayout。 不设置高度-内部组件看起来很好:每个标签占用尽可能少的空间并保持在顶部: 但是,如果我使用filelayout.setHeight(“400px”)将布局高度设置为400px-我的3个标签中的每一个开始占用33%的空间: 我只希望我的标签只占用所需的空间,我的垂直布局与我设置的一样长。请帮帮我。垂直布局将高度平均分配给所有组件。 因此,使用3个组件,可以得到3行,每行占整个垂直布局高度的33% 您可以使用.setExpandRatio(…)

因此,我有一个对象
VerticalLayout
。 不设置高度-内部组件看起来很好:每个标签占用尽可能少的空间并保持在顶部:

但是,如果我使用
filelayout.setHeight(“400px”)将布局高度设置为400px-我的3个标签中的每一个开始占用33%的空间:


我只希望我的标签只占用所需的空间,我的垂直布局与我设置的一样长。请帮帮我。

垂直布局将高度平均分配给所有组件。 因此,使用3个组件,可以得到3行,每行占整个垂直布局高度的33%

您可以使用
.setExpandRatio(…)

要使所有
标签
位于顶部,只需将“空”的
标签
als最后一个元素添加到
垂直布局
,并告诉
垂直布局
使用最后一行的所有“溢出”高度

Label empty= new Label();
vl.addComponent(empty);
vl.setExpandRatio(empty, 1);
将其设置为1意味着它将占据溢流高度的1部分

还有一种捷径方法可以在一次调用中同时执行这两项操作:

vl.addComponentsAndExpand(empty);
这是您问题的答案,但您可能会提出以下问题:

当垂直布局的内容高于可用高度时,我们该怎么办?
但这是另一个问题,如果您希望有滚动条,面板可能是更好的容器。

是否所有组件都保持相同的大小(即,您是否介意只扩展最后一个组件)?这是一个肮脏的解决方法。但它是有效的。非常感谢你。另外,它是“setExpandRatio”,而不是“setComponentExpandRatio”。一个小的改进(使用而不是上面的代码):Label empty=new Label();vl.addComponentAndExpand(空);