MyMain_KeyEvent.java
package mymain;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
// awt ->확장 -> swing
// Frame JFrame
public class MyMain_KeyEvent extends JFrame implements KeyListener {
//키상수
public static final int LEFT = 1;
public static final int UP = 2;
public static final int RIGHT = 4;
public static final int DOWN = 8;
public static final int LEFTUP = LEFT | UP;
public static final int LEFTDOWN = LEFT | DOWN;
public static final int RIGHTUP = RIGHT | UP;
public static final int RIGHTDOWN = RIGHT | DOWN;
int key_state = 0;
public MyMain_KeyEvent() {
// TODO Auto-generated constructor stub
super("내가만든 윈도우-동시키 처리");
//키이벤트 등록
this.addKeyListener(this);
//위치
//this.setLocation(200, 100);
//크기지정
//this.setSize(400, 300);
// 위치 + 크기정보
this.setBounds(200, 100, 400, 300);
//보여줘라
this.setVisible(true);
//종료코드
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyMain_KeyEvent();
}
//------------------------------------------------------
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
int key = e.getKeyCode();
if(key==KeyEvent.VK_LEFT)
key_state = key_state | LEFT;
else if(key==KeyEvent.VK_UP)
key_state = key_state | UP;
else if(key==KeyEvent.VK_RIGHT)
key_state = key_state | RIGHT;
else if(key==KeyEvent.VK_DOWN)
key_state = key_state | DOWN;
move_window();
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
int key = e.getKeyCode();
if(key==KeyEvent.VK_LEFT)
key_state = key_state ^ LEFT;
else if(key==KeyEvent.VK_UP)
key_state = key_state ^ UP;
else if(key==KeyEvent.VK_RIGHT)
key_state = key_state ^ RIGHT;
else if(key==KeyEvent.VK_DOWN)
key_state = key_state ^ DOWN;
move_window();
}
private void move_window() {
// TODO Auto-generated method stub
//현재위치 구하기
Point pt = getLocation();
int gan = 10;
//위치변경
if(key_state == LEFTUP) {
pt.x -= gan;
pt.y -= gan;
}else if(key_state == LEFTDOWN) {
pt.x -= gan;
pt.y += gan;
}else if(key_state == RIGHTUP) {
pt.x += gan;
pt.y -= gan;
}else if(key_state == RIGHTDOWN) {
pt.x += gan;
pt.y += gan;
}else if(key_state == LEFT) {
pt.x -= gan;
}else if(key_state == UP) {
pt.y -= gan;
}else if(key_state == RIGHT) {
pt.x += gan;
}else if(key_state == DOWN) {
pt.y += gan;
}
//변경된 위치로 이동시키기
setLocation(pt);
}
}