SWT에서 컬러 다이얼로그창을 띄워서 컬러를 선택해 배경색을 바꾸는 샘플입니다.

컬러 다이얼로그창을 쓸 일은 그렇게 많지 않지만 쓸때를 대비해 올려 봅니다.


샘플소스도 그렇게 어려운게 아니기 때문에 한번 실행보고 소스를 분석하면 금방 이해 할 수 있습니다.


[샘플코드]

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.ColorDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
 
public class ColorDialogExample {
 
	public ColorDialogExample() {
 
		final Display display = new Display();
		final Shell shell = new Shell(display);
		shell.setSize(300, 200);
 
		shell.setText("컬러 다이얼로그");
		shell.setLayout(new FillLayout(SWT.VERTICAL));
		final Text text = new Text(shell, SWT.BORDER);
		final Button btn = new Button(shell, SWT.PUSH);
		btn.setText("색 선택");
 
		// 버튼 선택 이벤트
		btn.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				// 컬러 다이얼로그 생성
				ColorDialog colorDialog = new ColorDialog(shell);
				// 컬러 다이얼로그 타이틀
				colorDialog.setText("색 선택");
				// 초기 선택 값을 흰색으로 지정
				colorDialog.setRGB(new RGB(255, 255, 255));
				// 선택된 컬러값
				RGB newColor = colorDialog.open();
				if (newColor == null) {
					return;
				}
				// 텍스트 배경색을 바꿈
				text.setBackground(new Color(display, newColor));
			}
		});
		shell.open();
 
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}
 
	public static void main(String[] argv) {
		new ColorDialogExample();
	}
}


[실행결과]

sample1.png


색 선택 버튼 클릭 하면 색선택 다이얼로그 창이 뜸.

sample2.png


빨간색을 선택하고 확인 버튼

sample3.png


배경색이 빨간색으로 변경됨.

sample4.png



별로 어렵지 않죠?

글자색이라던가 배경색등을 사용자가 임의로 바꾸게 할수 있도록 할때 사용하면 괜찮을 것 같습니다.


감사합니다.