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

POWER JAVA 10장 예제 10-3 자동차 움직이기 (주석)

by prlkt5200 2022. 11. 3.
반응형

 

10장도 거의 마무리 되가네요 굴직한 문제가 뒤에서 떡하니 버티고 있기는 한데, 금방 해결할 수 있겠죠....

저한테는 구글이 있으니깐요 ㅋㅋㅋㅋ

 

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
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
 
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class MoveCar extends JFrame {
 
    // button의 좌표를 설정할 값이다.
    int img_x = 150, img_y = 150;
 
    JButton button;
 
    public MoveCar() {
        // Frame의 사이즈 설정, 버튼 객체와 이미지 객체를 생성했다.
        setSize(600300);
        button = new JButton("");
        ImageIcon icon = new ImageIcon("d:/이미지/자동차.PNG");
 
        // button에 이미지 버튼을 삽입한다.
        button.setIcon(icon);
 
        // panel 객체 생성 및 layout을 null로 한다.
        JPanel panel = new JPanel();
        panel.setLayout(null);
 
        // button의 좌표값과 사이즈를 설정한다.
        button.setLocation(img_x, img_y);
        button.setSize(200100);
 
        // 버튼을 panel에 추가해주고 panel에 focus를 준다.
        panel.add(button);
        panel.requestFocus();
        panel.setFocusable(true);
 
        // panel과 KeyListener 객체와 이어준다.
        panel.addKeyListener(new KeyListener() {
            public void keyPressed(KeyEvent e) {
                // 키를 입력했을 때의 코드값을 반환해서 keycode와 바인딩해준다.
                int keycode = e.getKeyCode();
                // 창 닫기 기능을 구현하기 위한 메소드이다.
                char keyChar = e.getKeyChar();
                // switch문에 따라 좌표값이 실시간으로 수정이된다.
                switch (keycode) {
                case KeyEvent.VK_UP:
                    img_y -= 10;
                    break;
                case KeyEvent.VK_DOWN:
                    img_y += 10;
                    break;
                case KeyEvent.VK_LEFT:
                    img_x -= 10;
                    break;
                case KeyEvent.VK_RIGHT:
                    img_x += 10;
                    break;
                }
                button.setLocation(img_x, img_y);
 
                //q를 누르면 창닫기 기능을 수행한다.
                if (keyChar == 'q') {
                    dispose();
                }
            }
 
            public void keyReleased(KeyEvent arg0) {
            }
 
            public void keyTyped(KeyEvent arg0) {
            }
 
        });
        add(panel);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
 
    public static void main(String[] args) {
        MoveCar f = new MoveCar();
    }
 
}
cs
반응형