1

特定のチェックボックスがチェックされたときに表示される Composite を Eclipse に追加したいと考えています。コンポジットは、WARNING_ICON とテキスト付きのラベルの 2 つの部分で構成されます。

レイアウトがうまくいかないようです。画像とラベルを並べて表示したいのです。コードの私のセクションは次のとおりです。

        final Composite warningComposite = new Composite(parent, SWT.NONE);
        warningComposite.setLayout(new GridLayout(2, false));
        warningComposite.setLayoutData(new GridData(0, 0, true, false));

        Label l = SWTUtilities.createLabel(composite, "", -1, -1, 1, GridData.BEGINNING);
        final Image img = PlatformUI.getWorkbench().getDisplay().getSystemImage(SWT.ICON_WARNING);
        l.setImage(img);
        l.setLayoutData(new GridData());

        l = SWTUtilities.createLabel(composite, "Wizards Gone Wild", -1, -1, 1, GridData.END);

SWTUtilities.createLabel メソッド:

public static Label createLabel(final Composite parent, final String label, final int width, final int indent, final int span, final int style) {
        Assert.isNotNull(parent);
        Assert.isNotNull(label);
        final Label control = new Label(parent, SWT.WRAP);
        control.setText(label);
        if (width > 0 || indent > 0 || span > 0) {
            final GridData data = new GridData(style);
            if (width > 0)
                data.widthHint = width;
            if (indent > 0)
                data.verticalIndent = indent;
            if (span > 1)
                data.horizontalSpan = span;
            control.setLayoutData(data);
        }
        return control;
    }
4

1 に答える 1

2

どうぞ:

public static void main(String[] args)
{
    Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setLayout(new GridLayout(2, false));

    Label image = new Label(shell, SWT.NONE);
    image.setImage(d.getSystemImage(SWT.ICON_WARNING));
    image.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    Label text = new Label(shell, SWT.NONE);
    text.setText("SOME TEXT HERE");
    text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));


    shell.pack();
    shell.open();
    while (!shell.isDisposed())
        while (!d.readAndDispatch())
            d.sleep();
}

次のようになります。

ここに画像の説明を入力


説明は次のとおりです。SWT は、テキストの縦方向の配置をサポートしていませんLabel(すべての OS がサポートしているわけではないため)。解決策は、ラベル内のテキストではなく、ラベルを親の中央に揃えることです。

于 2013-04-23T16:28:16.840 に答える