본문 바로가기

IT/자바

[자바] 방향키로 프레임 움직이기 및 눌린키 확인

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
package study;
 
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
 
import javax.swing.JFrame;
 
public class Point extends JFrame implements KeyListener {
 
    JFrame frame;
    java.awt.Point p;
 
    public Point() {
        
        super("Frame 움직이기");
        
        this.addKeyListener(this);
        frame = new JFrame();
        frame.setBounds(300200300200);
 
        
        
        
        //보여줘라
        this.setVisible(true);
        frame.setFocusable(true);
        //종료코드
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
    }
 
    public static void main(String[] args) {
        new Point();
    }
 
    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void keyPressed(KeyEvent e) {
        p = frame.getLocation();
 
        if (e.getKeyCode() == 37)
            System.out.println("왼쪽 누름");
        frame.setLocation(p.x - 20, p.y);
        if (e.getKeyCode() == 38)
            System.out.println("위 누름");
        frame.setLocation(p.x, p.y - 20);
        if (e.getKeyCode() == 39)
            System.out.println("오른쪽 누름");
        frame.setLocation(p.x + 20, p.y);
        if (e.getKeyCode() == 40)
            System.out.println("아래 누름");
        frame.setLocation(p.x, p.y + 20);
    }
 
    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub
        
    }
 
}
/*
    http://itlove.tistory.com/254
    
    f.getLocation();
    프레임의 현재 좌표( x좌표, y좌표 )를 가져옵니다.
    
    Point p = f.getLocation();
    프레임의 현재 좌표값을 변수에 넣어 줍니다. 
    getLocation 메서드는 Point를 반환하기 때문에 Point 로 받아주어야 합니다. 
    Point 는 x좌표( Point.x )와 y좌표( Point.y ) 2개의 값을 갖는 클래스입니다.
    
    import java.awt.*;
    Point 클래스를 import 해줘야 합니다. 간단하게 * 를 이용했습니다.
    
    if( e.getKeyCode() == 37 ) f.setLocation( p.x-20, p.y);
    setLocation 은 좌표값을 수정해주는 메서드입니다. 
    2개의 매개변수를 넣어주어야 하며 
    첫번째 매개변수에 x좌표를 2번째 매개변수에 y좌표를 넣어주어야 합니다.
    왼쪽키( 키코드 37)을 눌렀을때 왼쪽으로 이동해야 하니까 x좌표를 -20 만큼 이동해 준것입니다. 
    현재 좌표에서 20만큼 이동해야 하기 때문에 getLocation 에서 가져온 좌표값을 이용했습니다.
    
    if( e.getKeyCode() == 38 ) f.setLocation( p.x, p.y-20);
    반대로 38( 위쪽 )을 눌렀을때는 y좌표를 20을 빼주었습니다. 
    컴퓨터상에서는 맨위 세로값이 0이고 아래로 갈수록 커지거든요.
*/
cs