带滚动条的JFace PreferencePage列表

时间:2014-08-04 09:51:10

标签: scrollbar eclipse-rcp scrolledcomposite

我正在尝试创建一个包含List的PreferencePage。列表可以变大,并在列表下面有与列表交互的按钮。如果按钮始终可见,但是当列表变大时,PreferencePage将使用滚动条自动扩展,这将非常有用。 enter image description here

我现在的解决方案是一个包含List的ScrolledComposite。问题是ScrolledComposite没有填写布局。我必须通过setSize手动设置大小。

高度的SWT.DEFAULT: SWT.DEFAULT for hight

425身高:

enter image description here

带有列表的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上创建滚动条,并且列表会扩展。

1 个答案:

答案 0 :(得分:0)

使用heightHint的{​​{1}}值指定列表的高度。由于首选项页面总是尝试将页面大小调整为控件的完整大小,因此需要在某处设置高度:

GridData