Vaadin - несколько макетов вкладок - PullRequest
0 голосов
/ 10 января 2012

У меня есть несколько вкладок 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, чтобы я мог зафиксировать его положение, чтобы он не мог двигаться, но он не работал. есть идеи?

Ответы [ 2 ]

1 голос
/ 10 января 2012

Если я правильно понимаю вашу проблему, вот как это сделать с таблицей:

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

Здесь дерево не может отображать полосы прокрутки, поэтому мы оборачиваем его в полноразмерную панель, которая при необходимости отображает полосы прокрутки.

0 голосов
/ 30 июня 2016

Я все еще испытывал подобные проблемы в Vaadin 7.4.8 и смог заставить его работать.

1 - Первое, что я убедился, было то, что родительские компоненты (в моем случае у меня было два VerticalLayout, добавляемых один в другой), имели setSizeFull (). Они добавляются в представление. В моем случае я забыл установить его для класса, который расширяет VerticalLayout и Implements View, вызываемого навигатором.

2 - Другая важная деталь заключается в том, что для tabSheet, на котором вкладки были добавлены с помощью addTab (component), также должен быть установлен setSizeFull (), чтобы вкладка занимала все неиспользуемое пространство, особенно внизу.

2.1 - Добавлен setExpandRatio (tabSheet, 1), чтобы он перемещался вверх.

3 - Теперь для компонента (VerticalLayout), который добавляется к tabSheet с помощью addTab (компонент), к нему добавлено два компонента, один из них - HorizontalLayout, а второй - VerticalLayout.

Итак, я убедился, что:

  • это было setSizeFull
  • setExpandRatio (HorizontalLayout, .5f);
  • setExpandRatio (VerticalLayout, .5f);
...