1. 다음의 화면을 가지는 애플리케이션을 작성하라.
코드
|
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
// 패널에 그릴 컴포넌트 클래스 생성
class MyComponent extends JPanel {
public void paintComponent(Graphics g) {
g.drawLine(10, 80, 100, 10); // 직선 그리기(x1,y1,x2,y2)
g.drawString("drawLine()", 10, 100); // 텍스트 그리기("텍스트",x,y)
g.setColor(Color.RED);
g.drawRect(110, 10, 90, 80); // 사각형 그리기(x,y,width,height)
g.setColor(Color.BLACK);
g.drawString("drawRect()", 110, 100); // 텍스트 그리기("텍스트",x,y)
// 1 여기에 소스를 추가
g.setColor(Color.lightGray);
g.draw3DRect(210, 10, 90, 80, true); // 3D사각형 그리기(x,y,width,height,볼록함)
g.setColor(Color.BLACK);
g.drawString("draw3DRect()", 210, 100);
g.drawRoundRect(310, 10, 90, 80, 20, 20); // 둥근 사각형 그리기(x,y,width,height,호의너비,호의높이)
g.drawString("drawRoundRect()", 310, 100);
g.drawOval(410, 10, 90, 80); // 타원 그리기(x,y,width,height)
g.drawString("drawRect()", 410, 100);
g.drawArc(510, 10, 90, 80, 90, 120); // 호 그리기(x,y,width,height,시작각, 호의각)
g.drawString("drawArc()", 510, 100);
int[] x1 = {610, 720, 610, 720}; // 다각형 x좌표 배열
int[] y1 = {10, 90, 90, 10}; // 다각형 y좌표 배열
g.drawPolygon(x1, y1, 4); // 다각형 그리기(x[],y[],꼭짓점수)
g.drawString("drawPolygon", 610, 100);
g.fillRect(110, 110, 90, 80);
g.drawString("fillRect()", 110, 200);
g.setColor(Color.lightGray);
g.fill3DRect(210, 110, 90, 80, true);
g.setColor(Color.BLACK);
g.drawString("fill3DRect()", 210, 200);
g.fillRoundRect(310, 110, 90, 80, 20, 20);
g.drawString("fillRoundRect()", 310, 200);
g.fillOval(410, 110, 90, 80);
g.drawString("fillOval()", 410, 200);
g.fillArc(510, 110, 90, 80, 90, 120);
g.drawString("fillArc()", 510, 200);
int[] x2 = {610, 720, 610, 720};
int[] y2 = {110, 190, 190, 110};
g.fillPolygon(x2, y2, 4);
g.drawString("fillPolygon", 610, 200);
}
}
// 컴포넌트가 들어간 패널을 넣을 프레임 생성
public class LAB1 {
public static void main(String[] args) {
JFrame frame = new JFrame(); // 프레임 객체 생성
frame.setSize(800,300); // 프레임 크기 설정
frame.setTitle("그리기"); // 프레임 제목 설정
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 프레임 닫을 시 작동 방식
MyComponent component = new MyComponent(); // 컴포넌트 객체 생성
frame.add(component); // 프레임에 컴포넌트 추가
frame.setVisible(true); // 창을 화면에 출력
}
}
|
cs |
- 위의 소스를 분석하고 주석을 달아라.
- 1번 위치에 나머지 도형들을 그리는 문장들을 추가하라.
- 도형을 그리는 색상을 변경하여 보자. 예를 들어서 사각형의 색상을 빨간색으로 변경하여 보라.
- drawArc()의 각도를 변경하여 보자.
// 전체적으로 본문의 너비(width)가 길어 다른 도형에 침범하여 길이를 줄였습니다.
// 3DRect()는 기본 색상으로 하면 3D 느낌이 들지 않아 색상을 변경하였습니다.
실행 결과

2. 다음의 각 폰트에 대하여 20포인트의 폰트를 만들고 이것을 이용하여 폰트의 이름과 크기를 화면에 출력하는 프로그램을 작성하라.
코드
|
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
40
41
42
43
44
45
46
47
48
49
50
51
52
|
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
class MyPanel extends JPanel {
Font f1, f2, f3, f4, f5;
public MyPanel() {
f1 = new Font("Serif", Font.BOLD, 20);
f2 = new Font("Monospaced", Font.ITALIC, 20);
f3 = new Font("San Serif", Font.PLAIN, 20);
f4 = new Font("Dialog", Font.PLAIN, 20);
f5 = new Font("DialogInput", Font.PLAIN, 20);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.LIGHT_GRAY);
g.fillRect(0, 0, 400, 20);
g.setColor(Color.BLACK);
g.drawString("Applet", 7, 15);
g.drawString("Applet started.", 0, 150);
g.setFont(f1);
g.drawString("Serif 20 points PLAIN", 20, 50);
g.setFont(f2);
g.drawString("SanSerif 20 points BOLD", 20, 70);
g.setFont(f3);
g.drawString("Monospaced 20 points ITALIC", 20, 90);
g.setFont(f4);
g.drawString("Dialog 20 points ITALIC", 20, 110);
g.setFont(f5);
g.drawString("DialogInput 20 points BOLD", 20, 130);
}
}
public class LAB2 {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(400,200);
frame.setTitle("Applet Viewer: DemonFont.class");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyPanel p = new MyPanel();
frame.add(p);
frame.setVisible(true);
}
}
|
cs |
실행 결과

3. 서로 다른 반지름을 갖는 10개의 타원을 서로 다른 색상으로 그리는 프로그램을 작성하라. 각 타원은 20픽셀만큼 떨어져 있어야 한다. drawOval() 메소드를 사용하라. 타원의 중앙에 타원의 반지름을 drawString() 메소드를 이용하여 출력하라.
코드
|
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
class OvalComponent extends JPanel {
public void paintComponent(Graphics g) {
int x = 10;
int y = 10;
int r = 50;
// 1
g.setColor(Color.ORANGE);
g.drawOval(x, y, r, r);
g.drawString(r / 2 + "pix", x + (r / 2) - 10, y + (r / 2));
x += r + 20;
r += 5;
// 2
g.setColor(Color.RED);
g.drawOval(x, y, r, r);
g.drawString(r / 2 + "pix", x + (r / 2) - 10, y + (r / 2));
x += r + 20;
r += 5;
// 3
g.setColor(Color.BLUE);
g.drawOval(x, y, r, r);
g.drawString(r / 2 + "pix", x + (r / 2) - 10, y + (r / 2));
x += r + 20;
r += 5;
// 4
g.setColor(Color.YELLOW);
g.drawOval(x, y, r, r);
g.drawString(r / 2 + "pix", x + (r / 2) - 10, y + (r / 2));
x += r + 20;
r += 5;
// 5
g.setColor(Color.PINK);
g.drawOval(x, y, r, r);
g.drawString(r / 2 + "pix", x + (r / 2) - 10, y + (r / 2));
x += r + 20;
r += 5;
// 6
g.setColor(Color.GREEN);
g.drawOval(x, y, r, r);
g.drawString(r / 2 + "pix", x + (r / 2) - 10, y + (r / 2));
x += r + 20;
r += 5;
// 7
g.setColor(Color.LIGHT_GRAY);
g.drawOval(x, y, r, r);
g.drawString(r / 2 + "pix", x + (r / 2) - 10, y + (r / 2));
x += r + 20;
r += 5;
// 8
g.setColor(Color.MAGENTA);
g.drawOval(x, y, r, r);
g.drawString(r / 2 + "pix", x + (r / 2) - 10, y + (r / 2));
x += r + 20;
r += 5;
// 9
g.setColor(Color.CYAN);
g.drawOval(x, y, r, r);
g.drawString(r / 2 + "pix", x + (r / 2) - 10, y + (r / 2));
x += r + 20;
r += 5;
// 10
g.setColor(Color.WHITE);
g.drawOval(x, y, r, r);
g.drawString(r / 2 + "pix", x + (r / 2) - 10, y + (r / 2));
}
}
public class LAB3 {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(950, 150);
frame.setTitle("LAB3");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
OvalComponent component = new OvalComponent();
frame.setBackground(Color.BLACK);
frame.add(component);
frame.setVisible(true);
}
}
|
cs |
실행결과

// Graphics g를 Graphics[] g=new Graphics[10];식으로 배열로 반복문으로 실행했을때, 컴포넌트가 나타나지 않음.
// 컴포넌트 색상이 밝은 톤이라, 잘 보이기 위해 frame의 배경 색상을 BLACK으로 설정함
4. 다음의 그래프를 그리는 프로그램을 작성하라.
코드 (다시 봐도 정말 그래프를 따라그리기만 했네요. 후에 다시 보완하고 수정하겠습니다.)
|
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
class MComponent extends JPanel {
public void paintComponent(Graphics g) {
int x = 20;
int y = 20;
for (int i = 8; i > 0; i--) {
if (i > 1)
g.drawLine(x + 10, y - 5, x + 20, y - 5); // line길이 10
g.drawString("" + i, x, y);
y += 50;
}
for (int i = 0; i < 3; i++) {
g.drawLine(120 + (100 * i), 360, 120 + (100 * i), 350);
}
int[] dx = { 30, 30, 320 };
int[] dy = { 15, 360, 360 };
g.drawPolyline(dx, dy, 3);
int[] dx1 = { 30, 170, 320 };
int[] dy1 = { 265, 265, 65 };
g.drawPolyline(dx1, dy1, 3);
int dx3 = 30;
int dy3 = 265;
while (dx3 < 320) {
if (dx3 < 170) {
g.drawLine(dx3, dy3, dx3 + 10, dy3 - 3);
dx3 += 20;
dy3 -= 6;
} else {
g.drawLine(dx3, dy3, dx3 + 10, dy3 + 3);
dx3 += 20;
dy3 += 6;
}
}
g.setColor(Color.RED);
int[] dx2 = { 30, 170, 320 };
int[] dy2 = { 215, 165, 315 };
g.drawPolyline(dx2, dy2, 3);
int dx4 = 30;
int dy4 = 115;
int enddy4 = 215;
int average = (dy4 + enddy4) / 87;
while (dx4 < 320) {
g.drawLine(dx4, dy4, dx4 + 10, dy4 + average);
dx4 += 20;
dy4 = dy4 + average * 2;
}
}
}
public class LAB4 {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setTitle("Graph");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MComponent component = new MComponent();
frame.add(component);
frame.setVisible(true);
}
}
|
cs |
실행결과

LAB 4번은 그래프를 그리는 기능하게끔 수정하겠습니다.
'프로그래밍 > Java' 카테고리의 다른 글
| [POWER JAVA 2판] CHAPTER 15 PROGRAMMING 1~3 (0) | 2022.03.01 |
|---|---|
| [POWER JAVA 2판] CHAPTER 15 EXERCISE (0) | 2022.02.28 |
| [POWER JAVA 2판] CHAPTER 14 PROGRAMMING (0) | 2022.02.22 |
| [POWER JAVA 2판] CHAPTER 14 EXERCISE (0) | 2022.02.22 |
| [POWER JAVA 2판] CHAPTER 14 LAB (0) | 2022.02.22 |