VAADIN - 设置标签内容的完整高度

时间:2011-10-30 16:01:06

标签: vaadin

我有一个TabSheet和一个标签项。 标签内有一个表格。 我已将所有高度设置为setFullSize,但表格的高度不会占据整个标签。

代码在这里:

public class GvApplication extends Application {
    private static Logger log = Logger.getLogger(GvApplication.class.getName());

    Window mainWindow;
    TabSheet tabsheet;

    @Override
    public void init() {
        setTheme("gv");

        mainWindow = new Window("Test");
        mainWindow.getContent().setHeight("100%");

        tabsheet = new TabSheet();
        tabsheet.setSizeFull();

        mainWindow.addComponent(tabsheet);

        initSMSTab();

        setMainWindow(mainWindow);
    }

    private void initSMSTab() {
        VerticalLayout tab = new VerticalLayout();
        tab.setMargin(true);

        Table table = new Table("Naam");

        table.setWidth("100%");
        table.setHeight("100%");

        table.setSizeFull();
        tab.addComponent(table);

        tabsheet.addTab(tab);

        Tab smsTab = tabsheet.getTab(tab);
        smsTab.setCaption("SMS");
    }
}

桌子底下还有很多空间。如何让表格使用标签的全部内容?

2 个答案:

答案 0 :(得分:3)

如果组件应占用布局中的所有可用空间,除了在组件上调用setExpandRatio之外,还必须在布局上调用setSizeFull。在你的情况下:

tabsheet.setSizeFull();

VerticalLayout rootLayout = new VerticalLayout();
rootLayout.setSizeFull();
rootLayout.addComponent(tabsheet);
rootLayout.setExpandRatio(tabsheet, 1f);
mainWindow.setContent(rootLayout);

答案 1 :(得分:1)

默认情况下,当您创建新的表组件时,表“页面长度”表示行计数,值为15,这就是为什么表没有设置选项卡的完整大小的原因。设置完整大小的唯一方法是通过table.setPageLength(30)增加表“页面长度”。

PS。你可以删除这一行,因为你已经使用了“table.setSizeFull();”

 table.setWidth("100%");
 table.setHeight("100%");

编辑1

只有在调整父级或表格组件的大小时,才会在评论中显示在屏幕上的情况。尝试将 ResizeListener 添加到您的窗口,并在内部监听器中编写类似

的内容
    // This will return current rendered rows count
    int shownRowsCount = table.getVisibleItemIds().size();
    table.setPageLength(shownRowsCount);