vaadin 7 有两个水平布局,一个在右边

vaadin7 with two HorizontalLayout one on the right

我有 HorizontalLayout 并且其中组合 c1c2:

    HorizontalLayout hrzLy1 = new HorizontalLayout();
    mainVertical.addComponent(hrzLy1);
    hrzLy1.setWidth("100%");

    ComboBox c1 = new ComboBox("combo1");
    hrzLy1.addComponent(c1);
    c1.setWidth("100%");

    ComboBox c2 = new ComboBox("combo2");
    hrzLy1.addComponent(c2);
    c2.setWidth("40px");

我希望 c2 在右边并且只有 40px 宽度。 c1应该占据了window的全部左边。 我尝试使用 setComponentAlignment 但不能使 c1 更宽,并且 setExpandRatio 但是当我最大化 window 时,c2 并不完全在右边,看起来像在 window 尺寸变化的情况下应该改变比率,所以我猜比率不是解决方案。我尝试使用 GridLayout,但无法在 100% 和第二个 40px 上设置第一个单元格。请大家帮忙

我认为您可以通过使用展开比率和全尺寸 c1 来实现您想要的效果 - 将展开比率 1 赋予全尺寸组合框。 (但我想当你尝试时我没有完全理解问题所在)。

这是我尝试过的方法,它看起来像您想要实现的那样:

HorizontalLayout hrzLy1 = new HorizontalLayout();
hrzLy1.setWidth("100%");

ComboBox c1 = new ComboBox("combo1");
c1.setSizeFull();

ComboBox c2 = new ComboBox("combo2");
c2.setWidth("40px");

hrzLy1.addComponents(c1,c2);
hrzLy1.setExpandRatio(c1, 1.0f);

在 Vaadin 7.7.13 和全尺寸垂直布局中测试为 UI 内容。