【问题标题】:How to add a scrollbars to a tabitem in java?如何在 java 中的 tabitem 中添加滚动条?
【发布时间】:2021-08-23 19:42:21
【问题描述】:

我有一个方法,它创建一个 TabFolder,里面有两个标签(TabItem),分别称为“Edition”和“Visualisation”,我想在“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); 
}

谢谢:)

【问题讨论】:

  • mainComposite 应该将滚动复合作为其父文件夹,而不是选项卡文件夹。
  • 当 mainComposite 已经被 tabfolder 用作其他方法的父级时,mainComposite 如何成为滚动复合的父级,例如这种方法? :私人无效addUserIndication(){ this.userIndication =新标签(mainComposite,SWT.NONE); GridData gridData = new GridData(GridData.FILL, GridData.VERTICAL_ALIGN_BEGINNING, false, false); userIndication.setLayoutData(gridData);我应该为滚动条创建另一个复合吗?
  • 不可能两者兼有。在滚动合成中使用另一个合成。

标签: java swt scrollbar tabitem


【解决方案1】:

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

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));

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2016-02-22
    • 2013-11-27
    • 2016-02-29
    • 2015-03-18
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多