Java Vaadin-多选项卡布局

Java Vaadin-多选项卡布局,java,tabs,vaadin,Java,Tabs,Vaadin,我有几个Vaadin选项卡,其中一个显示一个表和一些按钮,另一个显示层次Vaadin树,并有一个自定义搜索框。我已经将选项卡的大小设置为H:420px W:250px,因此它们的大小相同,如果表太大或树太长,我会得到一个滚动条(这就是我想要的)问题是,其他组件(如搜索框和按钮)在布局底部被强制向下移动,因此如果我想访问按钮/搜索框,我必须向下滚动,以便使用我想要的组件。我尝试只为组件添加第二个布局,但没有帮助:-/以下是我迄今为止尝试的内容: TabSheet tabs = new TabShe

我有几个Vaadin选项卡,其中一个显示一个表和一些按钮,另一个显示层次Vaadin树,并有一个自定义搜索框。我已经将选项卡的大小设置为H:420px W:250px,因此它们的大小相同,如果表太大或树太长,我会得到一个滚动条(这就是我想要的)问题是,其他组件(如搜索框和按钮)在布局底部被强制向下移动,因此如果我想访问按钮/搜索框,我必须向下滚动,以便使用我想要的组件。我尝试只为组件添加第二个布局,但没有帮助:-/以下是我迄今为止尝试的内容:

TabSheet tabs = new TabSheet();
tabs.setWidth("250");
tabs.setHeight("420");

VerticalLayout lyTab = new VerticalLayout();
tabOne = tabs.addTab(lyTab, "Tab One", null);
//added an extra layout for the Buttons :
HorizontalLayout  lyButton = new HorizontalLayout();
lyButton.addComponent(applyButton);
lyButton.addComponent(selectAll);
lyTab.addComponent(lyButton);

我的想法是在tabSheet中添加第二个布局,这样我可以固定它的位置,这样它就不能移动了,但它不起作用。有什么想法吗?

如果我正确理解您的问题,这里是如何使用表格:

VerticalLayout tab = new VerticalLayout();
tab.setSizeFull();

Table table = new Table();
table.setSizeFull();
tab.addComponent(table);
tab.setExpandRatio(table, 1);

HorizontalLayout buttons = new HorizontalLayout();
buttons.addComponent(new Button());
buttons.addComponent(new Button());
tab.addComponent(buttons);

Tab tabOne = tabs.addTab(tab, "Tab One", null);
在这种情况下,表格是全尺寸的,并在需要时显示滚动条

对于树,将上述代码中的表格部分替换为:

Panel panel = new Panel();
panel.setSizeFull();
panel.getContent().setSizeUndefined();
tab.addComponent(panel);
tab.setExpandRatio(panel, 1);

Tree tree = new Tree();
tree.setSizeUndefined();
panel.addComponent(tree);

在这里,树无法显示滚动条,因此我们将其包装在一个全尺寸面板中,在需要时显示滚动条。

我在Vaadin 7.4.8中仍遇到类似问题,并且能够使其正常工作

1-我确保的第一件事是父组件(在我的例子中,有两个VerticalLayout被一个一个地添加到另一个中)具有setSizeFull()。正在将它们添加到视图中。在我的例子中,我忘记在一个扩展VerticalLayout并实现视图的类上设置它,该类由navigator调用

2-另一个重要的细节是tabSheet-在其上添加了addTab(component)的选项卡还必须设置一个setSizeFull(),以便该选项卡占用所有未使用的空间,尤其是底部

2.1-添加一个setExpandRatio(表1),使其向顶部移动

3-现在,对于使用addTab(component)添加到选项卡工作表的组件(VerticalLayout),我添加了两个组件,一个是HorizontalLayout,另一个是VerticalLayout

因此,我确保:

  • 它已经定了尺寸
  • 设置扩展比(水平布局,.5f)
  • 设置扩展比(垂直布局,.5f)