SWT:选项卡中的可滚动区域

时间:2010-03-21 13:12:23

标签: java user-interface scroll swt

我正在尝试将可滚动区域添加到选项卡式窗口。到目前为止,我在一个shell中有一个CTabFolder。我已经添加了5个CTabItems,一切都按预期工作。

在我的一个CTabItem上,内容太大而无法放在屏幕上,所以我希望能够滚动。内容是一组,每个组包含各种小部件。

因此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");

然后是内容:

复合tabArea = new Composite(制表符,SWT.V_SCROLL); tabArea.setLayout(new FormLayout()); tab.setControl(tabArea);

因此,选项卡中包含的组是使用tabArea作为父级创建的,所有内容都会按预期显示。问题是,垂直滚动条始终存在,但似乎没有做任何事情。内容在tabArea复合材料的底部被切掉。

为了让滚动正常工作,我还需要做些什么吗?

1 个答案:

答案 0 :(得分:5)

您需要使用ScrolledComposite。 (向下滚动并找到指向JavaDoc& snippets)的链接

以下是适合您情况的代码:

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);
相关问题