La interfaz KeyListener, nos
KeyListener permite detectar los eventos de
tecleado realizados sobre algún
componente.
2 import java.awt.event.KeyEvent; Líneas 22-24: Aunque sólo necesitemos
3 Para detectar los eventos del
import java.awt.event.KeyListener;
el método una keyPressed, debemos
Pasamos como parámetro
… teclado sobre el JFrame,
Sobrescribimos elsobrescribir
método el resto de los métodos de la
11 clase anónima
public void inicializarComponentes(){ de KeyListener.
12 utilizamos el métodoel cual se manda En este
keyPressed,
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ejemplo se muestra en
interfaz.
13 this.setSize(400, addKeyListener.
400);llamar cada vez quekeyReleased:
se utiliza Detecta
el
consola, las teclas
cuando que
se suelta unael usuario
tecla.
14 this.setTitle("Eventos de teclado");
teclado. presione.
15 keyTyped: Similar a keyPressed, funciona solo con
16 this.addKeyListener(new KeyListener(){ teclas de caracteres no imprimibles como las flechas
17 del teclado.
18 public void keyPressed(KeyEvent e){
19 System.out.println("Se presionó la tecla " + e.getKeyChar());
20
21
}
Línea 19: Obtenemos la tecla
22 public void keyReleased(KeyEvent e){} presionada mediante el método
23 getKeyChar de KeyEvent, y la
24 public void keyTyped(KeyEvent e){} imprimimos en la consola.
25
26 });
27 }
…
32 }
KeyAdapter
1 import javax.swing.JFrame;
2 import java.awt.event.KeyEvent; Este es el mismo ejemplo pero
3 import java.awt.event.KeyAdapter; utilizando la clase abstracta
KeyAdapter en lugar de la
4
…
10 interfaz KeyListener; esto
11 public void inicializarComponentes(){ permite sobrescribir sólo el
12
13
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 400);
método que se ocupa.
14 this.setTitle("Eventos de teclado");
15
16 this.addKeyListener(new KeyAdapter(){
17 @Override
18 public void keyPressed(KeyEvent e){
19 System.out.println("Se presiono la tecla " + e.getKeyChar());
20 }
21
22 });
23 }
24
…
28 }
getKeyCode
Otra forma de determinar qué
tecla generó el evento es
mediante el método getKeyCode
de KeyEvent, y las constantes
18 public void keyPressed(KeyEvent e){
19
como VK_ENTER, VK_SPACE, etc:
20 switch(e.getKeyCode()){
21 case KeyEvent.VK_UP: System.out.println("Arriba"); break;
22 case KeyEvent.VK_DOWN: System.out.println("Abajo"); break;
23 case KeyEvent.VK_LEFT: System.out.println("Izquierda"); break;
24 case KeyEvent.VK_RIGHT: System.out.println("Derecha"); break;
25 case KeyEvent.VK_SPACE: System.out.println("Espacio"); break;
26 case KeyEvent.VK_ENTER: System.out.println("Enter"); break;
27 default: System.out.println("Se presionó la tecla " + e.getKeyChar());
28 }
29
30 }
El resto de las constantes las puedes encontrar aquí:
https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html
Más información:
https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyListener.html