본문 바로가기

Java

Swing예제, KeyListener로 특정 키 값 인식

⭐KeyListener
키보드를 눌렀을 때 호출되는 메서드를 가지고 있는 인터페이스

keyTyped
keyPressed
keyReleased
3개 메서드를 구현할 수 있다.

 

메서드 안에

if문을 넣어 각 키 값에 맞는 구문을 설계할 수 있다. 

if (e.getKeyCode() == KeyEvent.VK_UP) {

System.out.println("위쪽 화살표 누름");
}

 

예제) 방향키 4개를 누르면 서로 다른 메시지가 호출되는 구문

----- -----  -----  -----  -----  -----  -----  -----  -----  ----- 

⭐구조

 

상속 JFrame/ 구현 KeyListener

멤버변수

     JTextArea

생성자 (initData, setInitLayout, addEventListener)

메소드

     initData (컴포넌트 정의)

     setInitLayout (디자인)

     addEventListener (상호작용)

오버라이드

     keyRealeased

메인코드

-----  -----  -----  -----  -----  -----  -----  -----  -----  ----- 

 

package _swing2;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
/**
 * 4.29
 */
public class MyKeyEventFrame extends JFrame implements KeyListener {

    //member
    private final int FRAME_SIZE = 500;
    private JTextArea textArea;

    //constructor
    public MyKeyEventFrame() {

        initData();
        setInitLayout();
        addEventListener();
    }

    //method
    private void initData() {
        
        setSize(FRAME_SIZE, FRAME_SIZE);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        //프레임 사이즈 고정

        textArea = new JTextArea();
    }

    private void setInitLayout() {
        
        setLayout(new BorderLayout());
        add(textArea);

        // 마지막에 실행
        setVisible(true);
    }

    private void addEventListener() {

        textArea.addKeyListener(this); //키보드 누르면 반응
    }

    //override
    @Override
    public void keyTyped(KeyEvent e) {} //🤷‍♂️

    @Override
    public void keyPressed(KeyEvent e) {} //🤷‍♂️

    @Override
    public void keyReleased(KeyEvent e) {

        System.out.println("KeyCode: " + e.getKeyCode());
        if (e.getKeyCode() == KeyEvent.VK_UP) {
            System.out.println("위쪽 화살표 누름");

        } else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
            System.out.println("아래쪽 화살표 누름");

        } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
            System.out.println("왼쪽 화살표 누름");

        } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
            System.out.println("오른쪽 화살표 누름");

        }
    }//keyReleased

    //main - test code
    public static void main(String[] args) {

        new MyKeyEventFrame();

    }//end of main
}//end of class

textArea 위에 키보드를 입력할 수 있다.
키보드 입력값이 시스템창에 출력된 모습