본문 바로가기

JAVA/SWT/JFACE

SashForm을 활용한 보조영역 펼침 접힘 구현

UI 작업을 하다보면 아래와 같이 보조 영역에 대한 펼침과 접힘을 구현해야 할 경우가 생긴다. 이경우 SWT SashForm을 활용하는 것이 가장 깔끔하게 작업을 마무리 할 수 있다.


▼ 예제의 UI 구성


SashForm을 구성하는 컴포지트를 생성하고 각 컴포지트의 비중을 설정하는 것은 아래의 코드로 구현된다.


// SashForm 생성 
SashForm sashForm = new SashForm(compositeBody, SWT.NONE);

// 메인 컴포지트 생성
Composite compositeMain = new Composite(sashForm, SWT.NONE);
compositeMain.setBackground(SWTResourceManager.getColor(SWT.COLOR_GREEN));
compositeMain.setLayout(new FormLayout());


// 보조 컴포지트 생성
Composite compositeSub = new Composite(sashForm, SWT.NONE);
compositeSub.setBackground(SWTResourceManager.getColor(SWT.COLOR_BLUE));
compositeSub.setLayout(new FormLayout());	

// sashform의 비중 설정 (메인 : 2, 보조 : 1)
sashForm.setWeights(new int[] {2, 1});


닫기버튼으로 보조 컴포지트의 영역을 감추는 기능은 아래의 코드로 구현된다. SashForm의 비중 설정에서 보조 컴포지트 영역을 '0'으로 설정하여 기능을 수행한다.


// 닫기버튼
btnClose.addSelectionListener(new SelectionAdapter() {
	@Override
	public void widgetSelected(SelectionEvent e) {
		// sashform의 비중 설정 (메인 : 1, 보조 : 0) => 보조 컴포지트가 감춰진다.
		sashForm.setWeights(new int[] {1, 0});
	}
});	


SashFormTest.java