삶 가운데 남긴 기록 AACII.TISTORY.COM
[SWT/JFace] Composite 클래스 본문
Composite 클래스
컨테이너 위젯은 GUI의 배경 구조를 구성하고 모듈식 코드를 제공합니다.
여러 composite 객체가 다른 composte 객체에 결합될 수 있습니다.
Composite 클래스의 메소드
- getChildren() : Control 객체의 배열을 반환
- getLayout() : composite에 연결한 레이아웃을 반환
- setLayout(Layout) : composite에 연결할 레이아웃을 설정
- getTabList() : 탭 순서에 따른 Control 객체의 배열을 반환
- setTabList(Control[]) : Composite의 위젯들의 탭 순서를 설정
Composite 클래스는 Scrollable 클래스의 하위 클래스 입니다.
그래서 모든 Composite 클래스는 스크롤바를 가질 수 있습니다.
Scrollabe 클래스의 메소드
- getClientArea() : Scrollable 객체에서 가능한 화면 표시 면적을 반환
- computeTrim(int, int, int, int) : 클라이언트 영역을 위한 Composite의 필요 면적을 반환
- getHorizontalBar() : 수평 스크롤바 객체를 반환
- getVerticalBar() : 수직 스크롤바 객체를 반환
getSize()가 Control의 면적 크기를 알려주지만 타이틀바, 상태바 등등이 얼만큼의 영역을 차지하는지 알 수 없습니다.
여기서 trim은 Composite 에서 편집 불가능한 영역을 말합니다.
Composite에서 편집 가능한 영역을 클라이언트 영역이라고 부릅니다.
SashForm
SashForm은 컨트롤들의 크기를 동적으로 조정할 수 있도록 위젯들의 그룹을 지정해서 관리할 수 있는 기능입니다.
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
public class SashForm extends Composite{
public SashForm(Composite parent) {
super(parent, SWT.NONE);
}
}
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
public class CompViewer extends ApplicationWindow{
public CompViewer() {
super(null);
}
protected Control createContents(Composite parent) {
SashForm sf = new SashForm(parent);
sf.setSize(120, 80);;
Button button1 = new Button(sf, SWT.ARROW | SWT.UP);
button1.setSize(120, 40);
Button button2 = new Button(sf, SWT.ARROW | SWT.DOWN);
button2.setBounds(0, 40, 120, 40);
return parent;
}
public static void main(String[] args) {
CompViewer cv = new CompViewer();
cv.setBlockOnOpen(true);
cv.open();
Display.getCurrent().dispose();
}
}
TabFolder
여러개의 Composite 객체를 하나의 컨테이너에 담습니다.
탭 인덱스를 통해서 각각에 접근 할 수 있습니다.
메인 인스턴스를 생성한 후에 tab이라고 부르는 TabItem 객체를 생성합니다.
그리고 setText()를 호출하여 탭 레이블에 문자열을 설정합니다.
setControl()으로 탭을 선택할 때 관련된 Control을 보이도록 탭과 Control을 연결합니다.
- getItemCount() : TabFolder의 TabItem 수를 반환
- getItems() : TabItem 객체의 배열을 반환
- getSelection() : 사용자가 어떤 TabItem을 선택했는지 알려줌.
- setSelection() : 선택될 탭을 설정
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
public class Ex_Composite extends Composite {
public Ex_Composite(Composite parent) {
super(parent, SWT.NONE);
parent.getShell().setText("Composite 예제");
SashForm cc1 = new SashForm(this);
cc1.setLocation(0,0);
cc1.pack();
SashForm cc2 = new SashForm(this);
cc2.setLocation(125, 25);
cc2.pack();
pack();
}
}
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
public class WidgetWindow extends ApplicationWindow {
public WidgetWindow() {
super(null);
}
protected Control createContents(Composite parent) {
//탭폴더 생성
TabFolder tf = new TabFolder(parent, SWT.NONE);
TabItem ti = new TabItem(tf, SWT.NONE);
ti.setText("탭폴더 예제");
ti.setControl(new Ex_Composite(tf));
getShell().setText("위젯 윈도우");
return parent;
}
public static void main(String[] args) {
WidgetWindow wwin = new WidgetWindow();
wwin.setBlockOnOpen(true);
wwin.open();
Display.getCurrent().dispose();
}
}
728x90
'DEV&OPS > Java' 카테고리의 다른 글
Singleton Pattern 과 DeadLock (21) | 2024.01.21 |
---|---|
[SWT/JFace] 이벤트 처리 (45) | 2024.01.21 |
JAVA 파일명으로 금지된 문자 검사하기 (1) | 2024.01.20 |
자바 Thread dump (0) | 2024.01.20 |
[SWT/JFace] Widget, Control, Label, Button (1) | 2024.01.20 |