如何在java中向tabitem添加滚动条?

问题描述

我有一个方法,它创建一个 TabFolder,其中包含两个名为“Edition”和“Visualisation”的选项卡(TabItem),我想向“EditionTab”选项卡项添加一个滚动条。

我尝试了以下方法 (addScrollbar) 来添加滚动条,但它不起作用,有什么建议吗? :

public static EditionView create(TabFolder mainTabFolder) {
    return new EditionView(mainTabFolder);
}

private EditionView(TabFolder mainTabFolder) {
    checkNotNull(mainTabFolder);
    this.tabfolder = mainTabFolder;
    this.mainComposite = new Composite(tabfolder,SWT.NONE);
    this.addAlternativeControls = new LinkedHashMap<>();
    this.alternativeControls = new LinkedHashMap<>();
    this.deletealternativeControls = new LinkedHashMap<>();

    this.gridLayout = new GridLayout(2,false);
    this.mainComposite.setLayout(gridLayout);
    initOpenBtn();
    addUserIndication();
    initEditionTab();
    addScrollbar();
}

/**
 * Initialization of the editing tab window
 */
private void initEditionTab() {

    this.editionTab = new TabItem(this.tabfolder,SWT.NONE);
    editionTab.setText("Edition");
}

private void addScrollbar() {
     ScrolledComposite sc = new ScrolledComposite(this.tabfolder,SWT.V_SCROLL |
             SWT.H_SCROLL);
     sc.setExpandHorizontal(true);
             sc.setExpandVertical(true);
             sc.setContent(mainComposite);
             sc.setMinSize(mainComposite.computeSize(SWT.DEFAULT,SWT.DEFAULT));
             editionTab.setControl(sc); 
}

谢谢:)

解决方法

为滚动的内容使用单独的复合材料,如下所示:

TabItem editionTab = new TabItem(tabfolder,SWT.NONE);
editionTab.setText("Edition");

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

editionTab.setControl(sc);

Composite scrolledComp = new Composite(sc,SWT.NONE);
scrolledComp.setLayout(new GridLayout());

sc.setContent(scrolledComp);

// TODO add scrolledComp children here before calling computeSize

sc.setMinSize(scrolledComp.computeSize(SWT.DEFAULT,SWT.DEFAULT));