본문 바로가기
Study/POWER JAVA(기본서)

POWER JAVA 9장 프로그래밍 1번 문제 ~2번 문제

by prlkt5200 2022. 11. 1.
반응형

안녕하세요 중간에 에러 하나 해결하느라 조금 늦었습니다;;

이번 장 이후부터는 개인적으로 흥미가 조금 있었으나, 사실 제가 백엔드 개발자를 1지망으로 희망하기에 

GUI를 다루는 부분 보다는 시스템이나 서버쪽을 더 집중하는 게 유용하다고 들었으며 그게 맞다고 생각하기에, 

9장 이후부터는 기본 문제를 제외한 대다수 문제들을 스킵할 수도 있으니, 양해부탁드립니다!

 

대신에 10장 부터는 책에 나와있는 문제를 직접 타이핑 하고 왜 그렇게 되는지 해설하는 것을 올려보도록 하겠습니다.

 


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
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class Test extends JFrame {
 
    JLabel jr;
    JButton jb1;
    JButton jb2;
    JPanel jp;
 
    Test() {
 
        setLayout(new FlowLayout());
        setTitle("MyFrame");
        setSize(300200);
 
        jr = new JLabel("자바는 즐거우세요?");
        jb1 = new JButton("yes");
        jb2 = new JButton("no");
 
        jp = new JPanel();
 
        jp.add(jr);
        jp.add(jb1);
        jp.add(jb2);
 
        add(jp);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
 
    public static void main(String[] args) {
        Test t = new Test();
    }
}
cs

 

2번 문제

 

1번 문제와 거의 유사하나 textField를 활용하는 문제이기에 한번 풀어봤습니다.

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
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class Test extends JFrame {
 
    JLabel jr;
    JButton jb;
    JPanel jp;
    JTextField jt;
 
    Test() {
 
        setLayout(new FlowLayout());
        setTitle("MyFrame");
        setSize(300200);
 
        jr = new JLabel("카운터 값");
        jb = new JButton("증가");
        jp = new JPanel();
        jt = new JTextField(10);
        jt.setText("0");
        
        jp.add(jr);
        jp.add(jt);
        jp.add(jb);
        
 
        add(jp);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
 
    public static void main(String[] args) {
        Test t = new Test();
    }
}
cs

 

3번부터 9번 문제는 스킵하고, 어떤 식으로 접급하면 좋을지에 대해 간략히 적어보겠습니다.

더 좋은 의견이 있으신 분들은 댓글로 남겨주셔도 좋습니다!

 

 

 

3. 2번 문제에서 요소만 바꾸면 될 것 같습니다.

4. 레이아웃을 gridLayout으로 수정해주고 간격도 맞춰준 상태에서, 총 3개의 panel(배경 패널, label 부착하는 패널, button부착하는 패널)을 이용해서 작업하면 될 듯 싶습니다.

5. 2번 3번 문제의 복합 형태라고 봅니다.

6. 레이아웃을 boderLayout으로 수정해주고 panel은 2개를 이용해서 작업해주면 좋을듯 싶습니다.

7. gridLayout으로 작업하고 배경색을 잘 수정하면 될 듯 싶습니다. 

책에서는 랜덤한 색상을 다음의 코드를 이용해 만든다고 하니 참고하시면 됩니다

int R = (int)(Math.random()*256);

int G = (int)(Math.random()*256);

int B = (int)(Math.random()*256);

Color color = new Color(R,G,B);

 

8. 이 문제는 교재에 계산기 만들어 보는 문제를 응용하면 될 듯 싶습니다.

 

9. 이 문제는 레이아웃을 절대배치로 수정 후에 label과 그 위치나 크기를 조절하는 메소드에 난수를 줘서 풀어보면 될 듯 싶습니다.

 

 

ps:많은 문제들을 스킵하려니 괜히 양심에 찔리기도 하고 혹시라도 도움이 필요하신 분들에게 큰 도움이 못되어드린 것 같아 죄송하지만, 크게 중요한 것도 아니고 시간만 있으면 언제든지 할 수 있으니 가볍게 넘어가겠습니다!~~

반응형