Vaadin 子垂直布局的宽度

Vaadin 子垂直布局的宽度,vaadin,vaadin7,Vaadin,Vaadin7,我有一个水平布局(我们称之为家长)。在这里面我有两个垂直布局(left’s call left and right) 左边只包含一些文本,右边包含很多元素 父项的宽度为100%,因此它采用完整的浏览器宽度: parent.setWidth(“100%”) 左边应该占据它所需要的空间,右边应该占据所有其他空间 我怎样才能做到?我尝试了所有描述的变体,但没有成功。我试图: left.setWidthUndefined() right.setWidth(“100%”) left.setWidth(“

我有一个
水平布局
(我们称之为家长)。在这里面我有两个垂直布局(left’s call left and right)

左边只包含一些文本,右边包含很多元素

父项的宽度为100%,因此它采用完整的浏览器宽度:

parent.setWidth(“100%”)

左边应该占据它所需要的空间,右边应该占据所有其他空间

我怎样才能做到?我尝试了所有描述的变体,但没有成功。我试图:

  • left.setWidthUndefined()
  • right.setWidth(“100%”)
  • left.setWidth(“150px”)
  • left.setWidth(“30%”)
    right.setWidth(“70%”)一起
没有任何效果

更新的源代码:

HorizontalLayout parent = new HorizontalLayout();
parent.setCaption("Parent");

VerticalLayout left = new VerticalLayout();
left.setCaption("Left");

VerticalLayout right = new VerticalLayout();
right.setCaption("Right");

parent.addComponent(left);
parent.addComponent(right);
parent.setWidth("100%");
right.setWidth("100%");
parent.setExpandRatio(right, 1.0f);

setCompositionRoot(parent);
用于
水平布局
组件的空间“分布”


解决问题的关键是告诉
HorizontalLayout
组件如何通过
layout.setExpandRatio(leftComponent,1.0f)扩展其子级方法。

我刚刚做了一个快速测试,以下方法似乎有效:

...
left.setSizeUndefined();
parent.setWidth("100%");
parent.setExpandRatio(right, 1);
...

这是测试应用程序的完整代码(不含导入):


如果您与inspector一起检查,则这两个面板在浏览器中可见?尝试增加高度——它们不是面板,而是布局。哪个督察?我应该加多少高度?高度变化很大。我以前试过,但放错地方了。根据您的建议,右侧的垂直布局仍然没有扩展到完整尺寸。是否必须将父级的宽度设置为100%?是的,您的子组件需要采用所有allowd大小,因为您的子级必须具有100%的宽度,我现在有:
parent.setExpandRatio(左,1.0f)
右.设置宽度(“100%”)。仍然没有成功。@mosquito87如果您想让
右边的
组件使用所有空间,您需要
parent.setExpandRatio(**right**,1)
。还要确保父对象的所有父对象都具有100%的宽度。这样,左侧部分将不再显示。我已经在我的问题中发布了我的“简化”源代码。谢谢
@Theme("reindeer")
public class ForumUI extends UI {

    @WebServlet(value = "/*", asyncSupported = true)
    @VaadinServletConfiguration(productionMode = false, ui = ForumUI.class)
    public static class Servlet extends VaadinServlet {
    }

    public static class SomeComponent extends CustomComponent {
        public SomeComponent() {
            HorizontalLayout parent = new HorizontalLayout();
            parent.setCaption("Parent");
            parent.addStyleName("v-ddwrapper-over");

            VerticalLayout left = new VerticalLayout();
            left.setCaption("Left");
            left.addStyleName("v-ddwrapper-over");

            VerticalLayout right = new VerticalLayout();
            right.setCaption("Right");
            right.addStyleName("v-ddwrapper-over");

            parent.addComponent(left);
            parent.addComponent(right);

            left.setSizeUndefined();
            parent.setWidth("100%");
            parent.setExpandRatio(right, 1);

            setCompositionRoot(parent);
        }
    }

    @Override
    protected void init(VaadinRequest request) {
        setContent(new SomeComponent());
    }

}