본문 바로가기

IT/자바

키 테스트(움직임)

KeyTest.java

package mymain;

import java.awt.Dimension;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;

//  awt ->확장 -> swing
//  Frame         JFrame

public class KeyTest extends JFrame implements KeyListener{

	//해상도
	int screen_w,screen_h;
	
	public KeyTest() {
		// TODO Auto-generated constructor stub
		super("키보드연습");

		//해상도 구하기
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		screen_w = d.width;
		screen_h = d.height;
		
		System.out.printf("w=%d h=%d\n",screen_w,screen_h);
		
		//위치
		//this.setLocation(200, 100);
		//크기지정
		//this.setSize(400, 300);

		// 위치 + 크기정보
		this.setBounds(200, 100, 400, 300);
		
		this.setResizable(false);//크기변경불가

		//보여줘라
		this.setVisible(true);
		
		//키보드 이벤트 등록
		// Delegation Event Model(위임이벤트모델)
		//this에서 키이벤트가 발생하면 처리를 this에게 위임
		this.addKeyListener(this);
		
		

		//종료코드
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new KeyTest();
	}

	
//-------------------------------------------------	
	@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();//VK_키
		//System.out.println(key);
		//현재 윈도우의 위치정보 얻기
		Point pt = this.getLocation();
		//왼쪽으로 이동
		if(key==KeyEvent.VK_LEFT) {
			//pt.x--;
			pt.x-=5;
		} else if(key==KeyEvent.VK_RIGHT) {
			pt.x+=5;
		} else if(key==KeyEvent.VK_UP) {
			pt.y-=5;
		} else if(key==KeyEvent.VK_DOWN) {
			pt.y+=5;
		} 

		//왼쪽화면을 벗어나면
		if(pt.x < 0-400) {
			//오른쪽 화면으로 보여져라
			pt.x=screen_w;
		} else if(pt.x > screen_w) {
			pt.x=0-400;
		}

		if(pt.y < 0-300) {
			pt.y=screen_h;
		} else if(pt.y > screen_h) {
			pt.y=0-300;
		}

		
		
		
		
		//현재위치를 pt로 이동시킨다
		this.setLocation(pt);
		
		
		
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

}


'IT > 자바' 카테고리의 다른 글

enum (Enumeration) 인터페이스 정리  (0) 2018.05.08
[Java 강의70] 자바 GUI JFrame 크기,위치 및 좌표계  (0) 2018.05.08
WindowListener  (0) 2018.05.08
템플릿 만들기  (0) 2018.05.08
BaseWin, MyWin  (0) 2018.05.08