0

私は愚かな何かを逃しているに違いありません。ドキュメントには、RowLayoutレイアウトのRowDataオブジェクトで最小サイズ(幅と高さ)を指定できることが明確に記載されています。これは理にかなっています。ただし、基になるウィジェットがこのサイズを超えると、サイズは増加せず、ウィジェットはトリミングされます。それは本当に最小限ですか?

public static void main(String[] args) {

    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Example");
    shell.setBounds(100, 100, 325, 200);
    shell.setLayout(new FillLayout());

    Composite comp = new Composite(shell, SWT.BORDER);
    comp.setLayout(new RowLayout(SWT.VERTICAL));

    Label label1 = new Label(comp, SWT.CENTER);
    label1.setLayoutData(new RowData(20,20));
    label1.setText("Trying with bounded rowdata...");

    Label label2 = new Label(comp, SWT.CENTER);
    label2.setText("Trying with no rowdata...");


    comp.layout(true,true); // no difference
    shell.pack();
    shell.open();

    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

結果:

ここに画像の説明を入力してください

4

2 に答える 2

0

コンストラクターの javadocRowData(int, int)が間違っているに違いありません! javadocのヘッダーをよく読むと、 は の最小サイズではなく、初期サイズを設定するために使用されるRowDataと言われています。そのため、20x20 ピクセルの正方形でトリミングされています。RowDataControlsLabel

于 2012-11-30T08:06:57.673 に答える
0

レイアウトでパッキングをオフにしてみてください。

Composite comp = new Composite(shell, SWT.BORDER);
RowLayout layout = new RowLayout(SWT.VERTICAL);
layout.pack = false;
comp.setLayout(layout);

一方GridLayout、親に対してコントロールのサイズを変更するが、最小幅以上にする場合は、 a の使用を検討することもできます。最小幅は で機能しGridDataます。

于 2012-12-03T12:12:34.257 に答える