我正在尝试向我的选项卡式窗口添加一个可滚动区域。到目前为止,我在 shell 中有一个 CTabFolder。我向其中添加了 5 个 CTabItems,一切都按预期工作。
在我的一个 CTabItems 上,内容太大而无法显示在屏幕上,因此我希望能够滚动。内容是一组组的集合,每个组都包含各种小部件。
所以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(tabs, SWT.V_SCROLL); tabArea.setLayout(new FormLayout()); tab.setControl(tabArea);
因此,选项卡中包含的组是使用 tabArea 作为父项创建的,并且一切都如您所愿。问题是垂直滚动条总是存在,但似乎什么也没做。内容在 tabArea 组合的底部被截断。
我还需要做些什么才能让滚动正常工作吗?
最佳答案
您需要使用 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);
关于java - SWT:选项卡中的可滚动区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2487160/