문제

SWT GUI 앱에서 GridLayout을 사용하고 있습니다. 각 그리드 셀에 대해 다음과 같은 그리드다타가 정의되어 있습니다. 그리드 셀 자체는 단지 레이블 일뿐입니다.

    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;

그리고 나는 이와 같은 각 lable 요소를 만듭니다.

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

이제 내 문제는 라벨 자체의 수직 정렬 속성, 수직 인벤트 속성 및 세트 식민지를 사용 함에도 불구하고 그리드 셀 영역 (25 x 25)과 관련하여 텍스트를 수직으로 정렬 할 수 없습니다. 뭔가 빠진 것 같아요. 그리드 셀에서 수직 중앙 정렬을 어떻게 달성 할 수 있습니까?

도움이 되었습니까?

해결책

레이블에는 setverticalalignment ()가 없으며 높이를 설정하면 레이아웃 데이터의 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 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