관리 메뉴

moozi

이벤트처리 본문

TIS_2018/응용sw2018_2기

이벤트처리

moozi 2018. 8. 20. 11:34

import java.awt.Container;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;

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

public class FlyingTextEx extends JFrame{
 private final int FLYING_UNIT=10;//이동하는 양.pixel.
 private JLabel la=new JLabel("HELLO");
 
 public FlyingTextEx() {
  this.setTitle("키이벤트처리");
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  Container c=this.getContentPane();
  c.setLayout(null);//레이아웃 없음. 설정.
  c.addKeyListener(new MyKeyListener()); 
  c.addMouseWheelListener(new MouseWheelListener() {

   @Override
   public void mouseWheelMoved(MouseWheelEvent e) {
    int n=e.getWheelRotation();
    if(n<0) {
     la.setLocation(la.getX(), la.getY()-FLYING_UNIT);
    }else {
     la.setLocation(la.getX(), la.getY()+FLYING_UNIT);
    }
    
   }});
  la.setBounds(50, 50, 100, 20);
  c.add(la);
  this.setSize(300,300);
  this.setVisible(true);

  //컨테이너에 포커스주기
  c.setFocusable(true);
  c.requestFocus();
 }
 
 //키이벤트처리 클래스.inner class이용
 class MyKeyListener extends KeyAdapter{
  //call back
  public void keyPressed(KeyEvent e) {
   int keyCode=e.getKeyCode();//입력된 키의 키코드 구함.
   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());
    break;
   }
  }
 }
 
 
 public static void main(String[] args) {
  new FlyingTextEx();

 }

}

'TIS_2018 > 응용sw2018_2기' 카테고리의 다른 글

자바연습문제13  (0) 2018.08.20
이미지버튼  (0) 2018.08.20
자바연습문제12  (0) 2018.08.17
자바연습문제11  (0) 2018.08.16
자바연습문제10  (0) 2018.08.14
Comments