我只是在探索 Vaadin 7,一开始就面对一堵墙让我有点沮丧。有 Swing 经验,我很高兴发现 Vaadin 布局非常简单,它们就像其他组件一样(根据类层次结构,它们实际上是组件)。但是,我在构建我的第一个窗口时遇到了问题。所以假设我有一个这样组成的 CustomComponent:
VerticalLayout
|
--TextArea
|
--Button
代码中的内容如下所示:
public class SOComplicatedComponent extends CustomComponent {
private VerticalLayout mainLayout;
private TextArea textArea;
private Button button;
public SOComplicatedComponent() {
buildMainLayout();
setCompositionRoot(mainLayout);
}
private VerticalLayout buildMainLayout() {
// common part: create layout
mainLayout = new VerticalLayout();
mainLayout.setWidth("100%");
mainLayout.setHeight("100%");
// top-level component properties
setWidth("100.0%");
setHeight("100.0%");
// textArea
textArea = new TextArea();
textArea.setValue("hey, this button is supposed to be under me!");
textArea.setSizeUndefined();
mainLayout.addComponent(textArea);
//button
button = new Button("Ooops");
button.setSizeUndefined();
mainLayout.addComponent(button);
return mainLayout;
}
}
然后我以以下方式构建一个窗口:
public class MyUI extends UI{
@Override
protected void init(VaadinRequest request) {
...
Window window = new Window("Help me SO", new SOComplicatedComponent());
addWindow();
}
}
结果,我得到了一个 TextArea 和 Button 重叠的窗口。当我调整窗口大小时,内容拉伸并且布局变得正常,但是我认为窗口应该自动适应内容大小,不是吗?
好的,决赛时间到了
问题
我希望 Button 位于窗口中的 TextArea 下,并使窗口大小自动适合其内容。在 Vaadin 7 中实现这一目标的最正确方法是什么?
谢谢