4

SWT GUI アプリで GridLayout を使用しています。各グリッド セルに対して次の GridData を定義しています。グリッド セル自体は単なるラベルです。

    GridData gridData = new GridData();
    gridData.horizontalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.heightHint = 25;
    gridData.widthHint = 25;
    gridData.verticalAlignment = GridData.VERTICAL_ALIGN_CENTER;
    gridData.verticalIndent = 10;

そして、私はこのように各ラベル要素を作成します -

    Label l = new Label(shell, SWT.BORDER);
    l.setAlignment(SWT.CENTER);
    l.setText("some text");
    l.setLayoutData( gridData );

今私の問題は、ラベル自体にverticalAlignmentプロパティ、verticalIndentプロパティ、およびsetAlignmentを使用しているにもかかわらず、テキストをグリッドセル領域( 25 x 25 )に対して垂直方向に中央揃えにすることができないことです。私は何かが欠けていると思います。グリッドセルで垂直方向の中央揃えを実現するにはどうすればよいですか?

4

3 に答える 3

8

Cラベル? なぜあなたはそれを使用しないのですか?

CLabel cl = new CLabel(shell, SWT.CENTER);
cl.setBounds(0, 0, 100, 100);
cl.setText("Custom Label!!!");

さらに、leftMargin、rightMargin、topMargin、bottomMargin を使用できます。

(3年越しでごめんなさい)

于 2012-11-30T02:12:52.783 に答える
1

私もこの問題に取り組みました。Labelパディングをサポートしていません。StyledText代わりに使ってしまいました。

final StyledText text = new StyledText(parent, SWT.WRAP);
final int padding = 5;

text.setLeftMargin(padding);
text.setRightMargin(padding);
text.setTopMargin(padding);
text.setBottomMargin(padding);

text.setWordWrap(true);
text.setCaret(null);

これは私にとってはうまくいきました。

于 2015-03-12T08:20:11.577 に答える