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

标签 java user-interface scroll swt

我正在尝试向我的选项卡式窗口添加一个可滚动区域。到目前为止,我在 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 . (向下滚动并找到指向 JavaDocsnippets 的链接)

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

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/

相关文章:

java - 找不到创建可执行jar的主类

javascript - 我可以使用 Jquery UI datepicker 更改键盘输入日期的格式吗?

java - 从上到下堆叠 Swing 元素

angular - Material Angular 滚动到垫列表上的元素

java - 在 Spring Boot 客户端中接收 Flux

java - 在WSO2中给出端口号和传递的参数

css - 如何使用 css 标记 GridPane 的选定单元格?

java - Android WebView滚动到底部

javascript - 如何使我的滚动流畅?

java - maven - 指定 java 编译器颠覆