[POWER JAVA 2판] CHAPTER 15 LAB

2022. 2. 27. 23:07·프로그래밍/Java

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);                // 창을 화면에 출력
    }
 
}
 
Colored by Color Scripter
cs
  • 위의 소스를 분석하고 주석을 달아라.
  • 1번 위치에 나머지 도형들을 그리는 문장들을 추가하라.
  • 도형을 그리는 색상을 변경하여 보자. 예를 들어서 사각형의 색상을 빨간색으로 변경하여 보라.
  • drawArc()의 각도를 변경하여 보자.

// 전체적으로 본문의 너비(width)가 길어 다른 도형에 침범하여 길이를 줄였습니다.

// 3DRect()는 기본 색상으로 하면 3D 느낌이 들지 않아 색상을 변경하였습니다.

실행 결과

Chapter 15 LAB1.java 실행결과

 

 

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);
    }
 
}
 
Colored by Color Scripter
cs

 

실행 결과

 

Chapter15 LAB2.java 실행결과

 

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);
    }
}
 
Colored by Color Scripter
cs

 

실행결과

 

Chapter15 LAB3.java 실행결과

// 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);
    }
 
}
 
Colored by Color Scripter
cs

 

 

실행결과

 

Chapter15 LAB 4.java 실행결과

 

 

 

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
'프로그래밍/Java' 카테고리의 다른 글
  • [POWER JAVA 2판] CHAPTER 15 PROGRAMMING 1~3
  • [POWER JAVA 2판] CHAPTER 15 EXERCISE
  • [POWER JAVA 2판] CHAPTER 14 PROGRAMMING
  • [POWER JAVA 2판] CHAPTER 14 EXERCISE
2Suchan
2Suchan
github : @KRSuchan
  • 2Suchan
    dev_logs
    2Suchan
  • 전체
    오늘
    어제
    • 분류 전체보기 (42)
      • 백준 (6)
        • Python (2)
        • 알고리즘 (2)
        • Java (2)
      • 프로그래밍 (10)
        • Java (10)
      • Spring (1)
        • 트러블슈팅 (1)
      • DB (1)
        • Redis (1)
      • DevOps (1)
        • Docker (1)
      • 수학 (12)
        • 이산수학 (12)
      • Univ. (11)
        • 캡스톤디자인 (7)
        • 인공지능 (1)
        • 빅데이터 (1)
        • 정보보안 (1)
        • 디자인패턴 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    14649
    20챕터
    21396
    2판
    chapter13
    Chapter14
    Chapter15
    exercise
    GUI
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
2Suchan
[POWER JAVA 2판] CHAPTER 15 LAB
상단으로

티스토리툴바