[java] 자바 스윙 컴포넌트에서 키보드 입력을 검출하는 방법은 어떻게 되나요?
먼저, KeyListener를 구현하는 클래스에서 다음 네 가지 메서드를 오버라이드해야 합니다.
keyPressed(KeyEvent e)
: 이 메서드는 키가 눌렸을 때 호출됩니다.keyReleased(KeyEvent e)
: 이 메서드는 키가 놓였을 때 호출됩니다.keyTyped(KeyEvent e)
: 키가 타이핑될 때 호출됩니다. (유니코드 키 뿐)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를 추가한 후, 각 메서드를 오버라이드하여 각각의 키 입력에 대한 동작을 정의했습니다.