2

リストを保持する PreferencePage を作成しようとしています。リストは大きくなる可能性があり、リストの下にはリストと対話するボタンがあります。ボタンが常に表示されている場合に便利ですが、リストが大きくなると、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

heightHintの値を使用してGridData、リストの高さを指定します。設定ページは常にページをコントロールのフル サイズに合わせようとするため、高さをどこかに設定する必要があります。

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 に答える