VAADIN - установить полную высоту содержимого вкладки - PullRequest
2 голосов
/ 30 октября 2011

У меня есть 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 ]

3 голосов
/ 31 октября 2011

Если компонент должен занимать все доступное пространство в макете, вы должны вызвать setExpandRatio в макете в дополнение к вызову setSizeFull в компоненте. В вашем случае:

tabsheet.setSizeFull();

VerticalLayout rootLayout = new VerticalLayout();
rootLayout.setSizeFull();
rootLayout.addComponent(tabsheet);
rootLayout.setExpandRatio(tabsheet, 1f);
mainWindow.setContent(rootLayout);
1 голос
/ 31 октября 2011

По умолчанию, когда вы создаете новый компонент таблицы, «длина страницы» таблицы, это означает количество строк, значение 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);
...