Java 如何根据需要使用滚动条构建扩展的vaadin窗口

Java 如何根据需要使用滚动条构建扩展的vaadin窗口,java,vaadin,vaadin7,Java,Vaadin,Vaadin7,我正在构建一个扩展窗口/布局,它将根据提供的数据进行扩展/收缩,可能会扩展以填充浏览器窗口 编辑:滚动条应位于工作区,而不是窗口上 到目前为止,我只能通过一个简单的标签列表(参见simple_list.png)使它垂直工作 垂直滚动条在浏览器窗口填充时显示垂直水平滚动条始终存在,窗口/布局的宽度似乎由面板标题的长度和右上角的窗口图标指示。 编辑:面板上的滚动条OK。没有横向扩展 对于GridLayout,它完全失败(参见GridLayout.png)。 编辑:即工作区(面板)上没有滚动条 最

我正在构建一个扩展窗口/布局,它将根据提供的数据进行扩展/收缩,可能会扩展以填充浏览器窗口

编辑:滚动条应位于工作区,而不是窗口上

到目前为止,我只能通过一个简单的标签列表(参见simple_list.png)使它垂直工作

  • 垂直滚动条在浏览器窗口填充时显示垂直水平滚动条始终存在,窗口/布局的宽度似乎由面板标题的长度和右上角的窗口图标指示。
    编辑:面板上的滚动条OK。没有横向扩展
  • 对于GridLayout,它完全失败(参见GridLayout.png)。
    编辑:即工作区(面板)上没有滚动条
最终的布局应该有一个中心工作区和页眉、页脚、左/右区域。要根据数据扩展的工作区域

你找错树了吗?CSSLayout?不适合瓦丁

感谢您的帮助/指导

下面是一个简化的测试用例(Vaadin 7,子类化窗口)

公共测试窗口(){
super.setSizeUndefined();
VerticalLayout vL=新的VerticalLayout();
vL.setsizevel();
超级设置内容(vL);
//添加组件(buildHeader());
面板工作区=新面板();
工作区。设置大小();
工作区。设置标题(“视图”);
vL.ADD组件(工作区);
容积率(工作区,1f);
//添加组件(buildFooter());
//-----------------------------
VerticalLayout视图=新建VerticalLayout();
view.setSizeUndefined();
workArea.setContent(视图);
对于(int i=0;i<100;i++){
字符串s=“视图行”+i;
对于(int j=0;j<10;j++){
s+=“uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuj;
}
标签线=新标签;
line.setSizeUndefined();
视图.添加组件(行);
}
//=============================
/*
VerticalLayout视图=新建VerticalLayout();
view.setSizeUndefined();
workArea.setContent(视图);
GridLayout gl=新的GridLayout();
gl.setSizeUndefined();
视图.添加组件(gl);
视图。设置扩展比率(总帐,1);
gl.设置列(2);
对于(int i=0;i<100;i++){
标签线=新标签(“视图线”+i);
line.setSizeUndefined();
总帐。添加组件(行);
}
*/
//------------------------------
中心();
setModal(真);
可设置的(真);
UI.getCurrent().addWindow(此);
}



瓦丁文件中说:

如果子窗口具有固定大小或百分比大小,且其内容太大而无法放入内容区域,则会显示特定方向的滚动条。另一方面,如果子窗口在方向上有未定义的大小,它将适合内容的大小,并且永远不会获得滚动条


来源:

更新了帖子,澄清了滚动条和未能扩展窗口的问题。滚动条在工作区的工作方式与预期相同,即面板滚动条而非窗口同上。窗口的扩展可垂直工作,但不能水平工作
public TestWindow() {

super.setSizeUndefined();

VerticalLayout vL = new VerticalLayout();
vL.setSizeFull();
super.setContent(vL);

//vL.addComponent(buildHeader());

Panel workArea = new Panel();
workArea.setSizeFull();
workArea.setCaption("View");
vL.addComponent(workArea);
vL.setExpandRatio(workArea, 1f);


//vL.addComponent(buildFooter());

//-----------------------------

VerticalLayout view = new VerticalLayout();
view.setSizeUndefined();
workArea.setContent(view);

for (int i=0; i < 100; i++) {
    String s = "view line "+i;
    for (int j=0; j < 10; j++) {
        s += "____________________"+j;
    }
    Label line = new Label(s);
    line.setSizeUndefined();
    view.addComponent(line);
}

//=============================
/*
VerticalLayout view = new VerticalLayout();
view.setSizeUndefined();
workArea.setContent(view);
GridLayout gl = new GridLayout();
gl.setSizeUndefined();
view.addComponent(gl);
view.setExpandRatio(gl,  1);
gl.setColumns(2);
for (int i=0; i < 100; i++) {
    Label line = new Label("view line "+i);
    line.setSizeUndefined();
    gl.addComponent(line);
}
*/
//------------------------------

center();

setModal(true);

setDraggable(true);

UI.getCurrent().addWindow(this);