관리 메뉴

moozi

Key이벤트 본문

TIS_2017/응용sw_2기

Key이벤트

moozi 2017. 7. 4. 10:31

import java.awt.Color;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class KeyCodeEx extends JFrame{
 JPanel contentPane=new JPanel();
 JLabel la=new JLabel();
 final int FLYING_UNIT=10;//이동하는 단위.10픽셀씩 이동.
 
 //Key Event처리를 위한 클래스
 class MyKeyListener extends KeyAdapter{
  public void keyPressed(KeyEvent e){
   la.setText(e.getKeyText(e.getKeyCode())+"키");
   if(e.getKeyChar()=='%'){
    contentPane.setBackground(Color.yellow);
   }else if(e.getKeyCode()==KeyEvent.VK_F1){
    contentPane.setBackground(Color.GREEN);
   }
   
   int keyCode=e.getKeyCode();
   System.out.println(keyCode);
   switch(keyCode){
    case KeyEvent.VK_UP:
     la.setLocation(la.getX(),la.getY()-FLYING_UNIT);
     break;
    case KeyEvent.VK_DOWN:
     la.setLocation(la.getX(),la.getY()+FLYING_UNIT);
     break;
    case KeyEvent.VK_LEFT:
     la.setLocation(la.getX()-FLYING_UNIT,la.getY());
     break;
    case KeyEvent.VK_RIGHT:
     la.setLocation(la.getX()+FLYING_UNIT,la.getY());
   }
   
  }
 }
 
 KeyCodeEx(){
  this.setTitle("키이벤트처리");
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  setContentPane(contentPane);//panel을 ContentPane으로 사용
  
  //레이아웃 설정 없음.
  contentPane.setLayout(null);
  
  contentPane.addKeyListener(new MyKeyListener());
  
  la.setLocation(50, 50);//Label 위치 수동설정.
  la.setSize(100,20);
  contentPane.add(la);
  
  this.setSize(300,300);
  this.setVisible(true);
  
  contentPane.requestFocus();
 }
 
 public static void main(String[] args) {
  new KeyCodeEx();

 }

}

'TIS_2017 > 응용sw_2기' 카테고리의 다른 글

자바연습문제03풀이  (0) 2017.07.05
자바연습문제10  (0) 2017.07.04
자바연습문제09  (0) 2017.07.03
자바연습문제08  (0) 2017.06.30
자바연습문제07  (0) 2017.06.29
Comments