SWT/JFace Layout
- 프로그래밍/SWT & JFace
- 2016. 2. 15. 01:01
FillLayout
내부 위젯을 왼쪽에서 오른쪽으로, 위에서 아래로 순차적으로 채워지게 표현하는 레이아웃
FillLayout 생성시 SWT.HORIZONTAL(가로), SWT.VERTICAL(세로) 어느 인자를 주느냐에 따라 채워지는 방향이 달라 짐.
[소스코드]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class FillComposite extends Composite { public FillComposite(Composite parent) { super(parent, SWT.NONE); FillLayout fillLayout = new FillLayout(SWT.HORIZONTAL); this.setLayout(fillLayout); for(int i = 0; i < 8; ++i) { Button btn = new Button(this, SWT.PUSH); btn.setText("Sample Button " + i); } } } | cs |
[결과화면]
[소스코드]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class FillComposite extends Composite { public FillComposite(Composite parent) { super(parent, SWT.NONE); FillLayout fillLayout = new FillLayout(SWT.VERTICAL); this.setLayout(fillLayout); for(int i = 0; i < 8; ++i) { Button btn = new Button(this, SWT.PUSH); btn.setText("Sample Button " + i); } } } | cs |
[결과화면]
RowLayout
내부 컴포넌트를 행으로 배치하고 부모 컴포넌트보다 내부 인자의 크기가 더 커지는 경우 다음 행으로 넘어가서 위젯을 배열한다.
Composite에 추가 된 자식위젯의 개별 크기를 컨트롤 하기 위해서 RowData를 추가할 수 있다.
RowLayout properties
- wrap: 위젯이 컨테이너의 공간을 넘어갈 때 다음 줄로 내릴것인지 결정한다. 기본값 true
- pack: 위젯의 내용에 최적으로 크기를 조절할것인지 결정한다. 기본값 true
- justify: 위젯을 컨테이너의 공간에 동일한 간격으로 펼쳐놓을것인지를 결정한다. 기본값 false
- marginLeft: 컨테이너 안쪽에서 위젯들이 놓일 영역사이의 좌측 여백
- marginTop: 컨테이너 안쪽의 위쪽 여백
- marginBottom: 컨테이너 안쪽의 아래쪽 여백
- marginRight: 컨테이너 안쪽의 오른쪽 여백
- spacing: 위젯들간의 간격
[소스코드]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class RowComposite extends Composite { public RowComposite(Composite parent) { super(parent, SWT.NONE); RowLayout rowLayout = new RowLayout(SWT.HORIZONTAL); this.setLayout(rowLayout); Button btnFirst = new Button(this, SWT.PUSH); btnFirst.setText("LayoutData 지정"); btnFirst.setLayoutData(new RowData(200, 200)); // new RowData(width, height) for(int i = 0; i < 8; ++i) { Button btn = new Button(this, SWT.PUSH); btn.setText("Sample Button " + i); } } } | cs |
[결과화면]
TODO
소스에 문제가 없다면 리사이즈 하는 경우 RowLayout은 다음행으로 버튼을 이동시켜야 하는데 그렇게 동작하지 않고 있다. 무엇이 문제인지는 추후에 확인해보고 업데이트 해야할 것 같다.
GridLayout
그리드 형태의 격자무늬로 위젯을 배열한다.
new GridLayout(numColumns, makeColumnsEqualWidth) 으로 열의 개수, 컬럼이 동일 사이즈를 갖을지를 결정한다.
GridLayout에서 중요한 것은 내부 위젯의 개별 스타일을 결정하는 GridData의 세팅이다.
GridData 생성자에 적용가능한 스타일 상수
스타일 상수 |
설명 |
GridData.FILL_HORIZONTAL |
비어있는 공간을 채우기 위해 셀을 수평으로 확장. |
GridData.FILL_VERTICAL |
비어있는 공간을 채우기 위해 셀을 수직으로 확장. |
GridData.FILL_BOTH |
비어있는 공간을 채우기 위해 셀을 수직, 수평으로 확장. |
GridData.HORIZONTAL_ALIGN_BEGINNING |
셀의 내용을 왼쪽으로 정렬. |
GridData.HORIZONTAL_ALIGN_END |
셀의 내용을 오른쪽으로 정렬. |
GridData.HORIZONTAL_ALIGN_CENTER |
셀의 내용을 수평 가운데 정렬. |
GridData.HORIZONTAL_ALIGN_FILL |
셀의 내용을 셀안에 비어 있는 수평 공간을 채우기 위해 확장. |
GridData.VERTICAL_ALIGN_BEGINNING |
셀의 내용을 위쪽으로 정렬. |
GridData.VERTICAL_ALIGN_END |
셀의 내용을 아래쪽으로 정렬. |
GridData.VERTICAL_ALIGN_CENTER | 셀의 내용을 수직 가운데 정렬. |
GridData.VERTICAL_ALIGN_FILL | 셀의 내용을 셀 안에 비어있는 수직 공간을 채우기 위해 확장. |
GridData properties
Properties |
Default | 설명 |
widthHint |
SWT.DEFAULT | 열의 최소 너비로 SWT.DEFAULT는 최소 너비가 지정되어 있지 않다는 것을 의미 |
heightHint |
SWT.DEFAULT | 열의 최소 높이로 SWT.DEFAULT는 최소 높이가 지정되어 있지 않다는 것을 의미 |
horizontalIndent |
0 | 셀의 왼쪽 가장자리부터 해당 컨트롤까지의 픽셀 수 |
horizontalSpan |
1 | 그리드에서 이 셀이 차지하는 열의 개수 |
verticalSpan | 1 | 그리드에서 이 셀이 차지하는 행의 개수 |
[소스코드]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class GridComposite extends Composite { public GridComposite(Composite parent) { super(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(4, false); this.setLayout(gridLayout); // 첫 번째 버튼만 GridData 적용 Button firstBtn = new Button(this, SWT.PUSH); firstBtn.setText("horSpan2, verSpan2"); GridData data = new GridData(GridData.FILL_BOTH); data.horizontalSpan = 2; data.verticalSpan = 2; firstBtn.setLayoutData(data); for(int i = 0; i < 23; ++i) { Button btn = new Button(this, SWT.PUSH); btn.setText("Sample Button " + i); } } } | cs |
[결과화면]
다운로드
'프로그래밍 > SWT & JFace' 카테고리의 다른 글
JFace TableViewer Example (2) | 2016.03.20 |
---|---|
SWT Table Example (0) | 2016.03.13 |
JFace Simple Tree Example (0) | 2016.02.29 |
SWT Simple Tree Example (0) | 2016.02.21 |
JFace Event처리 (Action and Contribution) (0) | 2016.02.12 |
SWT Event 처리 (Event and Listener) (0) | 2016.02.11 |
TabFolder를 이용하여 탭화면 구성하기 (0) | 2016.02.10 |
화면에 표시되는 주요 클래스 구조 Widget/Control/Composite (0) | 2016.01.17 |
이 글을 공유하기