質問

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)に対してテキストを垂直方向の中央に揃えることができません。私は何かが欠けていると思います。グリッドセルで垂直方向の中央揃えを実現するにはどうすればよいですか。

役に立ちましたか?

解決

LabelにはsetVerticalAlignment()がありません。LayoutDataのheightHintを使用して高さを設定すると、コントロールのサイズになり、中央での設定が事実上停止します。回避策は、ラベルを希望するサイズのコンポジットに配置し、コントロールを中央に配置することです。例:

Composite labelCell = new Composite(shell, SWT.BORDER);
GridData gridData = new GridData();
gridData.heightHint = 250;
gridData.widthHint = 250;
labelCell.setLayoutData(gridData);
labelCell.setLayout(new GridLayout());
Label l = new Label(labelCell , SWT.NONE);
l.setText("some text");
l.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));

他のヒント

CLabel?なぜ使用しないのですか?

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

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

(3年後ごめんなさい)

私もこの問題に取り組んだ。 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);

これは私のためのトリックでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top