안녕하세요.





이렇게 오른쪽에도 슬라임 그림을 넣는게 지난시간의 숙제였죠? 정답은 아래와 같습니다.



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
        // 라벨 생성
        JLabel imgLbl = new JLabel();
        
        // 라벨에 넣을 아이콘 생성
        ImageIcon bsImg = new ImageIcon(Study01.class.getResource("/study/img/slime(blue).png"));
        
        // 라벨에 아이콘 설정
        imgLbl.setIcon(bsImg);
        
        // 기타 설정
        imgLbl.setBounds(3030122130);
        imgLbl.setHorizontalAlignment(JLabel.CENTER);
        frm.getContentPane().add(imgLbl);
        
        // ★ 라벨2 생성
        JLabel imgLbl2 = new JLabel();
        
        // ★ 라벨2에 아이콘 설정
        imgLbl2.setIcon(bsImg);
        
        // ★ 기타 설정
        imgLbl2.setBounds(18230122130);
        imgLbl2.setHorizontalAlignment(JLabel.CENTER);
        frm.getContentPane().add(imgLbl2);
 
        // 프레임이 보이도록 설정
        frm.setVisible(true);
cs


이제는 굳이 설명 안드려도 다 이해가 되실 것 같네요. 한가지 주목할만한점은 이미지 아이콘 객체를 하나더 만들지 않고 기존 것을 재사용한 점이겠네요(19행 참조)


그런데말입니다. 예민한 분은 여태까지 계속 신경이 쓰인 부분이 있을 겁니다. 한글의 글꼴이 좀 보기가 싫죠. 모든 컴포넌트의 글꼴을 '굴림'으로 한번 바꿔볼까 합니다.

메인함수의 맨윗부분에다가 아래 코드를 추가하시면 되겠습니다.


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
// Study01.java
 
package study;
 
import java.awt.Font;
import java.util.Enumeration;
 
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;
 
public class Study01 {
 
    public static void main(String[] args) {
        
        // ★ 모든 글꼴 통일
        Enumeration<Object> keys = UIManager.getDefaults().keys();
        while (keys.hasMoreElements()) {
            Object key = keys.nextElement();
            Object value = UIManager.get(key);
            if (value instanceof FontUIResource)
                UIManager.put(key, new FontUIResource("굴림", Font.PLAIN, 14));
        }
 
        // 프레임 생성
        JFrame frm = new JFrame();
cs



되게 복잡하죠^^; 코드 내용을 이해하실 필요는 없구요, 25행의 ("굴림", Font.PLAIN, 14) 이 부분만 입맛에 맞게 바꿔주시면 되겠습니다.


(글꼴, 유형, 크기) 입니다.


만약에 크기 20짜리 굵은 궁서를 하고 싶으면 ("궁서", Font.BOLD, 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
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// Study01.java
 
package study;
 
import java.awt.Font;
import java.util.Enumeration;
 
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;
 
public class Study01 {
 
    public static void main(String[] args) {
        
        // 모든 글꼴 통일
        Enumeration<Object> keys = UIManager.getDefaults().keys();
        while (keys.hasMoreElements()) {
            Object key = keys.nextElement();
            Object value = UIManager.get(key);
            if (value instanceof FontUIResource)
                UIManager.put(key, new FontUIResource("굴림", Font.PLAIN, 14));
        }
 
        // 프레임 생성
        JFrame frm = new JFrame();
 
        // 프레임 제목 설정
        frm.setTitle("슬라임 퇴치하기");
 
        // 프레임 크기 설정
        frm.setSize(350300);
 
        // 프레임을 화면 가운데에 배치
        frm.setLocationRelativeTo(null);
 
        // 프레임을 닫았을 때 프로그램이 종료되도록 설정
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        // 레이아웃 설정
        frm.getContentPane().setLayout(null);
 
        // 버튼 생성
        JButton btn1 = new JButton("슬라삐");
        JButton btn2 = new JButton("슬라디");
 
        // 버튼 위치와 크기 설정
        btn1.setBounds(3017012230);
        btn2.setBounds(18217012230);
 
        // 프레임에다가 버튼 추가
        frm.getContentPane().add(btn1);
        frm.getContentPane().add(btn2);
 
        // 라벨 설정
        JLabel lbl = new JLabel();
        lbl.setBounds(3020027450);
        lbl.setText("게임을 시작합니다");
        lbl.setHorizontalAlignment(JLabel.CENTER); // 수평 가운데 정렬
        frm.getContentPane().add(lbl);
 
        // 버튼이 눌렸을때
        btn1.addActionListener(event -> {
            lbl.setText("나는 슬라삐");
        });
 
        btn2.addActionListener(event -> {
            lbl.setText("나는 슬라디");
        });
 
        // 라벨 생성
        JLabel imgLbl = new JLabel();
 
        // 라벨에 넣을 아이콘 생성
        ImageIcon bsImg = new ImageIcon(Study01.class.getResource("/study/img/slime(blue).png"));
 
        // 라벨에 아이콘 설정
        imgLbl.setIcon(bsImg);
 
        // 기타 설정
        imgLbl.setBounds(3030122130);
        imgLbl.setHorizontalAlignment(JLabel.CENTER);
        frm.getContentPane().add(imgLbl);
 
        // ★ 라벨2 생성
        JLabel imgLbl2 = new JLabel();
 
        // ★ 라벨2에 아이콘 설정
        imgLbl2.setIcon(bsImg);
 
        // ★ 기타 설정
        imgLbl2.setBounds(18230122130);
        imgLbl2.setHorizontalAlignment(JLabel.CENTER);
        frm.getContentPane().add(imgLbl2);
 
        // 프레임이 보이도록 설정
        frm.setVisible(true);
 
    }
 
}
 
cs



이로써 슬라임 게임의 디자인적인 코딩은 다 끝났습니다.


이제 버튼을 눌러서 전투를 할 수 있도록 코드를 손봐야겠죠?


감사합니다.

+ Recent posts