안녕하세요.
이렇게 오른쪽에도 슬라임 그림을 넣는게 지난시간의 숙제였죠? 정답은 아래와 같습니다.
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(30, 30, 122, 130); imgLbl.setHorizontalAlignment(JLabel.CENTER); frm.getContentPane().add(imgLbl); // ★ 라벨2 생성 JLabel imgLbl2 = new JLabel(); // ★ 라벨2에 아이콘 설정 imgLbl2.setIcon(bsImg); // ★ 기타 설정 imgLbl2.setBounds(182, 30, 122, 130); 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(350, 300); // 프레임을 화면 가운데에 배치 frm.setLocationRelativeTo(null); // 프레임을 닫았을 때 프로그램이 종료되도록 설정 frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 레이아웃 설정 frm.getContentPane().setLayout(null); // 버튼 생성 JButton btn1 = new JButton("슬라삐"); JButton btn2 = new JButton("슬라디"); // 버튼 위치와 크기 설정 btn1.setBounds(30, 170, 122, 30); btn2.setBounds(182, 170, 122, 30); // 프레임에다가 버튼 추가 frm.getContentPane().add(btn1); frm.getContentPane().add(btn2); // 라벨 설정 JLabel lbl = new JLabel(); lbl.setBounds(30, 200, 274, 50); 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(30, 30, 122, 130); imgLbl.setHorizontalAlignment(JLabel.CENTER); frm.getContentPane().add(imgLbl); // ★ 라벨2 생성 JLabel imgLbl2 = new JLabel(); // ★ 라벨2에 아이콘 설정 imgLbl2.setIcon(bsImg); // ★ 기타 설정 imgLbl2.setBounds(182, 30, 122, 130); imgLbl2.setHorizontalAlignment(JLabel.CENTER); frm.getContentPane().add(imgLbl2); // 프레임이 보이도록 설정 frm.setVisible(true); } } | cs |
이로써 슬라임 게임의 디자인적인 코딩은 다 끝났습니다.
이제 버튼을 눌러서 전투를 할 수 있도록 코드를 손봐야겠죠?
감사합니다.
'자바로 게임 만들기' 카테고리의 다른 글
[자바로 게임 만들기] 53. 축구선수 클래스 (전역변수, 지역변수) (0) | 2019.03.11 |
---|---|
[자바로 게임 만들기] 52. 디자인에 생명 주기 (1) | 2019.03.08 |
[자바로 게임 만들기] 50. 그림 넣기2 (7) | 2019.03.05 |
[자바로 게임 만들기] 49. 그림 넣기 (2) | 2019.03.04 |
[자바로 게임 만들기] 48. 패키지 (0) | 2019.02.28 |