SWT: прокручиваемая область на вкладке - PullRequest
3 голосов
/ 21 марта 2010

Я пытаюсь добавить прокручиваемую область в окно с вкладками.До сих пор у меня есть CTabFolder в оболочке.Я добавил 5 CTabItems к нему, и все работает как положено.

На одном из моих CTabItems содержимое слишком велико, чтобы уместиться на экране, поэтому я хотел бы иметь возможность прокручивать.Содержимое представляет собой набор групп, каждая из которых содержит различные виджеты.

Поэтому CTabFolder создается следующим образом:

CTabFolder tabs = new CTabFolder(shell, SWT.BORDER);
tabs.setSimple(false);
tabs.setUnselectedImageVisible(false);
tabs.setUnselectedCloseVisible(false);
tabs.setMinimizeVisible(false);
tabs.setMaximizeVisible(false);

FormData tabsLayoutData = new FormData();
tabsLayoutData.top = new FormAttachment(0, 5);
tabsLayoutData.left = new FormAttachment(0, 5);
tabsLayoutData.bottom = new FormAttachment(92, 0);
tabsLayoutData.right = new FormAttachment(100, -5);
tabs.setLayoutData(tabsLayoutData);

Затем CTabItem:

CTabItem tab = new CTabItem(tabs, SWT.NONE);
tab.setText("Role");

Затемсодержимое:

Composite tabArea = new Composite (tabs, SWT.V_SCROLL);tabArea.setLayout (new FormLayout ());tab.setControl (tabArea);

Таким образом, группы, содержащиеся на вкладке, создаются с родительским tabArea, и все выглядит так, как вы ожидаете.Проблема в том, что вертикальная полоса прокрутки присутствует всегда, но, похоже, ничего не делает.Содержимое обрезается внизу компоновки tabArea.

Что еще нужно сделать, чтобы прокрутка работала нормально?

1 Ответ

5 голосов
/ 24 марта 2010

Вам необходимо использовать ScrolledComposite . (Прокрутите вниз и найдите ссылки на JavaDoc & фрагменты )

Вот код, который должен работать в вашей ситуации:

ScrolledComposite scroller = new ScrolledComposite(tabs, SWT.BORDER | SWT.V_SCROLL);

Composite tabArea = new Composite(scroller, SWT.NONE); 
scroller.setContent(tabArea);

// create some controls in TabArea and assign a layout to TabArea

scroller.setExpandVertical(true);
scroller.setExpandHorizontal(true);
scroller.setMinSize(tabArea.computeSize(SWT.DEFAULT, SWT.DEFAULT));

tab.setControl(scroller);
...