2

我正在尝试创建一个包含列表的 PreferencePage。列表可以变大,并且在列表下方有与列表交互的按钮。如果 Buttons 始终可见但当列表变大时 PreferencePage 使用滚动条自动扩展,这将很有用。 在此处输入图像描述

我现在的解决方案是保存列表的 ScrolledComposite。问题是 ScrolledComposite 没有填写布局。我必须通过手动设置大小setSize

SWT.DEFAULT 高度: 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 上创建滚动条,并且列表会展开。

4

1 回答 1

0

使用 的heightHintGridData来指定列表的高度。由于首选项页面总是尝试将页面大小调整为控件的完整大小,因此有必要在某处设置高度:

List list = new List(composite, SWT.BORDER | SWT.V_SCROLL | SWT.MULTI);
GridData grid = new GridData(SWT.FILL, SWT.FILL, true, true);

grid.heightHint = 425;

list.setLayoutData(grid);
于 2014-08-04T10:19:12.200 回答