我正在尝试创建一个包含列表的 PreferencePage。列表可以变大,并且在列表下方有与列表交互的按钮。如果 Buttons 始终可见但当列表变大时 PreferencePage 使用滚动条自动扩展,这将很有用。
我现在的解决方案是保存列表的 ScrolledComposite。问题是 ScrolledComposite 没有填写布局。我必须通过手动设置大小setSize
。
SWT.DEFAULT 高度:
425 身高:
带有列表的 ScrolledComposite 代码:
ScrolledComposite scroll = new ScrolledComposite(
comp,
SWT.H_SCROLL | SWT.V_SCROLL);
Composite composite = new Composite(scroll, SWT.NONE);
scroll.setContent(composite);
scroll.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,true,2,1));
GridLayout layout = new GridLayout(1, true);
composite.setLayout(layout);
List list = new List(composite, SWT.BORDER | SWT.V_SCROLL | SWT.MULTI);
GridData grid = new GridData(SWT.FILL, SWT.FILL, true, true);
grid.horizontalSpan=1;
list.setLayoutData(grid);
scroll.setExpandHorizontal(true);
composite.setSize(composite.computeSize(SWT.DEFAULT, 425));
问题是如何让 ScrolledComposite 填写布局而不手动设置高值或防止 PreferncePage 自动扩展。使用表格也会自动扩展 PreferencePage 漏洞。设置scroll.setExpandVertical(true)
还会在 PreferencePage 上创建滚动条,并且列表会展开。