SWT: прокручиваемая область внутри вкладки

Я пытаюсь добавить прокручиваемую область в окно с вкладками. Пока у меня есть 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 (вкладки, SWT.V_SCROLL); tabArea.setLayout(новый FormLayout()); tab.setControl(tabArea);

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

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


person DaveJohnston    schedule 21.03.2010    source источник


Ответы (1)


Вам необходимо использовать 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);
person wsorenson    schedule 23.03.2010