[java] 자바 스윙 컴포넌트에서 키보드 입력을 검출하는 방법은 어떻게 되나요?

먼저, KeyListener를 구현하는 클래스에서 다음 네 가지 메서드를 오버라이드해야 합니다.

  1. keyPressed(KeyEvent e): 이 메서드는 키가 눌렸을 때 호출됩니다.
  2. keyReleased(KeyEvent e): 이 메서드는 키가 놓였을 때 호출됩니다.
  3. keyTyped(KeyEvent e): 키가 타이핑될 때 호출됩니다. (유니코드 키 뿐)
  4. addKeyListener(KeyListener l): 이 메서드를 사용하여 해당 컴포넌트에 KeyListener를 추가합니다.

다음은 KeyListener를 구현한 예제 코드입니다.

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class KeyListenerExample extends JFrame implements KeyListener {

    public KeyListenerExample() {
        JTextArea textArea = new JTextArea();
        add(textArea);
        textArea.addKeyListener(this);
        setSize(300, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) {
        new KeyListenerExample();
    }

    @Override
    public void keyTyped(KeyEvent e) {
        System.out.println("Key Typed: " + e.getKeyChar());
    }

    @Override
    public void keyPressed(KeyEvent e) {
        System.out.println("Key Pressed: " + e.getKeyChar());
    }

    @Override
    public void keyReleased(KeyEvent e) {
        System.out.println("Key Released: " + e.getKeyChar());
    }
}

위의 예제에서는 JFrame에 JTextArea를 추가하고, JTextArea에 KeyListener를 추가한 후, 각 메서드를 오버라이드하여 각각의 키 입력에 대한 동작을 정의했습니다.