我正在尝试将可滚动区域添加到选项卡式窗口。到目前为止,我在一个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复合材料的底部被切掉。
为了让滚动正常工作,我还需要做些什么吗?
答案 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);