问题描述
我有一个方法,它创建一个 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));