2015-12-29 3 views
0

я следующий метод, который создает TabFolder с двумя вкладками (TabItem) внутри него:Как добавить полосы прокрутки в TabItem?

protected Control createContents(Composite parent) { 
    Control control = super.createContents(parent); 

    // 1. Create a TabFolder (dialogArea is a Control) 
    TabFolder folder = new TabFolder((Composite) dialogArea, SWT.TOP); 

    // 2. Create tab 1 
    TabItem firstTab = new TabItem(folder, SWT.NONE); 
    firstTab.setText("Tab One"); 
    firstTab.setControl(createMyFirstComposite(folder)); 

    // 3. Create tab 2 
    TabItem secondTab = new TabItem(folder, SWT.NONE); 
    secondTab.setText("Tab Two"); 
    secondTab.setControl(createMySecondComposite(folder)); 

    // TODO: Make the tab content scrollable 

    return control; 
} 

Поскольку содержание вкладок содержит много элементов (созданных внутри createMyFirstComposite(folder) и createMySecondComposite(folder), я хочу добавить . скроллбары к нему

Как я могу это сделать

UPDATE: Пытался реализовать ScrolledComposite как предложил Грег:

protected Control createContents(Composite parent) { 
    Control control = super.createContents(parent); 

    TabFolder folder = new TabFolder((Composite) dialogArea, SWT.TOP); 

    TabItem firstTab = new TabItem(folder, SWT.NONE); 
    firstTab.setText("Tab One"); 

    ScrolledComposite sc = new ScrolledComposite(folder, SWT.V_SCROLL | SWT.H_SCROLL); 
    sc.setExpandHorizontal(true); 

    // createMyFirstComposite() returns composite with controlls 
    Composite body = createMyFirstComposite(folder); 

    sc.setContent(body); 
    sc.setMinSize(body.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 
    firstTab.setControl(sc); 

    // second tab... 

    return control; 
} 

К сожалению, на вкладке нет содержания. Я что-то упустил?

+1

Использование 'ScrolledComposite' –

+0

@ Greg-449 Вы можете дать краткий пример, основанный на моем коде? Не знаю, куда положить 'ScrolledComposite' внутри. – John

ответ

1

Используйте ScrolledComposite и элемент управления для TabItem. Что-то вроде:

TabItem firstTab = new TabItem(folder, SWT.NONE); 

ScrolledComposite sc = new ScrolledComposite(folder, SWT.V_SCROLL | SWT.H_SCROLL); 
sc.setExpandHorizontal(true); 
sc.setExpandVertical(true); 

Composite body = // TODO create all body controls of the tab 

sc.setContent(body); 
sc.setMinSize(body.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 

firstTab.setControl(sc); 
+0

Большое спасибо за ваш ответ! После изменения моего кода с помощью 'ScrolledComposite' я не вижу содержимого внутри своей вкладки. Обновлен мой вопрос. – John

+0

Аргументом 'createMyFirstComposite' должен быть прокрученный составной' sc'. –

Смежные вопросы