Vaadin - 多个TabSheet布局

时间:2012-01-10 12:58:06

标签: java tabs vaadin

我有几个Vaadin标签,其中一个显示一个表和一些按钮,另一个显示一个Hierarchical 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中添加第二个布局,这样我就可以修复它的位置,因此它无法移动,但它不起作用。任何想法?

2 个答案:

答案 0 :(得分:1)

如果我在这里正确理解你的问题是如何使用表格

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);

这里Tree无法显示滚动条,因此我们将其包装在一个完整大小的Panel中,在需要时显示滚动条。

答案 1 :(得分:0)

我在Vaadin 7.4.8中仍然遇到类似的问题,并且能够使其发挥作用。

1 - 我确定的第一件事是父组件(在我的情况下,我有两个VerticalLayout' s被添加到另一个)有setSizeFull()。它们被添加到视图中。就我而言,我忘了将它设置在扩展VerticalLayout和Implements View的类上,由navigator调用。

2 - 另一个重要的细节是tabSheet - 在其上添加了addTab(组件)的选项卡也必须设置setSizeFull(),以便选项卡占用所有未使用的空间,尤其是朝向底部。 / p>

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

3 - 现在,对于使用addTab(组件)添加到tabSheet的组件(VerticalLayout),我添加了两个组件,一个是Horizo​​ntalLayout,第二个是VerticalLayout。

所以我确定:

  • 它有setSizeFull
  • setExpandRatio(Horizo​​ntalLayout,.5f);
  • setExpandRatio(VerticalLayout,.5f);