SWT 레이아웃 문제 - 라벨을위한 패딩이 가능합니까?
-
03-07-2019 - |
문제
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);
이것은 나를 위해 트릭을했다.
제휴하지 않습니다 StackOverflow