Color 사용하기
SWT는 시스템 색상이라 불리는 16개의 기본 색상 셋을 제공하기 위해 디스플레이의 getSystemColor() 메서드를 사용합니다. 이 메서드는 SWT의 색상 상수를 나타내는 정수를 취하고, Color 객체를 반환합니다.
SWT 색상 상수 | 색상 16진 값 |
SWT.COLOR_BLACK | 0x000000 |
SWT.COLOR_DARK_GRAY | 0x808080 |
SWT.COLOR_GRAY | 0xC0C0C0 |
SWT.COLOR_WHITE | 0xFFFFFF |
SWT.COLOR_RED | 0xFF0000 |
SWT.COLOR_DARK_RED | 0x800000 |
SWT.COLOR_MAGENTA | 0xFF00FF |
SWT.COLOR_DARK_MAGENTA | 0x800080 |
SWT.COLOR_YELLOW | 0xFFFF00 |
SWT.COLOR_DARK_YELLOW | 0x808000 |
SWT.COLOR_GREEN | 0x00FF00 |
SWT.COLOR_DARK_GREEN | 0x008000 |
SWT.COLOR_CYAN | 0x00FFFF |
SWT.COLOR_DARK_CYAN | 0x008080 |
SWT.COLOR_BLUE | 0x0000FF |
SWT.COLOR_DARK_BLUE | 0x000080 |
만약 이 기본 색상들 외의 색상을 사용하려면, 원하는 RGB 값에 대응하는 Color 객체를 할당해야 합니다.
아래의 코드는 두 도형을 색칠하는 Canvas를 생성하는 예제입니다.
예제코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
package com.swtjface.Ch7;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
public class Ch7_Colors extends Canvas {
public Ch7_Colors(Composite parent) {
super(parent, SWT.NONE);
//Canvas 배경을 위해 시스템 색상을 사용
setBackground(this.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
addPaintListener(drawListener);
}
PaintListener drawListener = new PaintListener() {
public void paintControl(PaintEvent pe) {
Display disp = pe.display;
//RGB 값에 기반한 Color 객체 생성
Color light_gray = new Color(disp, 0xE0, 0xE0, 0xE0);
GC gc = pe.gc;
gc.setBackground(light_gray);
gc.fillPolygon(new int[] { 20, 20, 60, 50, 100, 20 });
gc.fillOval(120, 30, 50, 50);
//Color 객체 할당 해제
light_gray.dispose();
}
};
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package com.swtjface.Ch7;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
public class ColorTest extends ApplicationWindow {
public ColorTest() {
super(null);
}
protected Control createContents(Composite parent) {
Ch7_Colors composite = new Ch7_Colors(parent);
getShell().setText("Widget Window");
parent.setSize(200, 150);
return parent;
}
public static void main(String[] args) {
ColorTest tc = new ColorTest();
tc.setBlockOnOpen(true);
tc.open();
Display.getCurrent().dispose();
}
}
|
테스트
색상을 만들어내기 위해 Display 객체가 필요한데, 이는 Canvas와 결합한 getDisplay() 메서드를 사용합니다. 그러나 PaintListener 인터페이스는 생성자 멤버에게 접근할 수 없기 때문에, 생성자에서 PaintListener 를 추가하여 PaintListener 에 속해있는 PaintEvent 의 display 필드를 사용할 수 있습니다.
댓글 없음:
댓글 쓰기