Eventos de Usuario: KeyListener

java.awt.event

Interface KeyListener


Métodos:

  • void keyPressed(KeyEvent e)
    • Invocada cuando una tecla fue presionada.
  • void keyReleased(KeyEvent e)
    • Invocada cuando una tecla fue soltada.
  • void keyType(KeyEvent e)
    • Invocada cuando una tecla fue tipeada.

Class KeyEvent

java.lang.Object
java.util.EventObject
java.awt.AWTEvent
java.awt.event.ComponentEvent
java.awt.event.InputEvent
java.awt.event.KeyEvent
 
Desde y otra vez acederemos a un quien genero el evento con getKeyChar() que nos devuelve el caracter de la tecla asociada al evento o devolvera la constante de clase: KeyEvent.CHAR_UNDEFINED.
Para que un componente pueda recibir eventos de tecla es necesario que reciba el foco, los campos de textos, las areas de textos ya cuentan con esta propiedad pero otros componentes también pueden  hacerlo mediante setFocusable(true); 
  1. package eventos;
  2. import java.awt.*;
  3. import java.awt.event.KeyEvent;
  4. import java.awt.event.KeyListener;
  5. import javax.swing.*;
  6. public class Teclas extends JFrame implements KeyListener{
  7.     BorderLayout borde = new BorderLayout();
  8.     JLabel mensaje = new JLabel("Para comenzar pulse una tecla cualquiera:");
  9.    
  10.     JLabel tecla = new JLabel("");
  11.     public Teclas(){
  12.         super("Demostración de KeyListener");
  13.         setSize(350,100);
  14.         setLocationRelativeTo(null);
  15.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  16.         addKeyListener(this);
  17.         setLayout(borde);
  18.         add(mensaje, BorderLayout.NORTH);
  19.        
  20.         add(tecla, BorderLayout.WEST);
  21.         setVisible(true);
  22.     }
  23.     public static void main(String[] dario){
  24.         new Teclas();
  25.     }
  26.     public void keyTyped(KeyEvent e) {
  27.             tecla.setText("Tecla Pulsada = '" e.getKeyChar() "'");
  28.     }
  29.     public void keyPressed(KeyEvent e) {
  30.        
  31.     }
  32.     public void keyReleased(KeyEvent e) {
  33.        
  34.     }
  35. }



Un pequeño ejemplo de un mini-ahorcado con el uso de KeyListener, es lo suficientemente báscio con un palabra, sin intentos, etc. Hay que notar que el código está escrito para letras minúsculas y no Mayúsculas:
  1. import java.awt.*;
  2. import java.awt.event.KeyEvent;
  3. import java.awt.event.KeyListener;
  4. import javax.swing.*;
  5. public class MiniAhorcado extends JFrame implements KeyListener {
  6.     GridLayout layout = new GridLayout(3,1);
  7.     JLabel bienvenida = new JLabel("Adivina la Palabra:", JLabel.CENTER);
  8.     JPanel panel = new JPanel(new FlowLayout());
  9.     JLabel h = new JLabel("?", JLabel.CENTER);
  10.     JLabel o1 = new JLabel("?", JLabel.CENTER);
  11.     JLabel l = new JLabel("?", JLabel.CENTER);
  12.     JLabel a = new JLabel("?", JLabel.CENTER);
  13.     JLabel m = new JLabel("?", JLabel.CENTER);
  14.     JLabel u = new JLabel("?", JLabel.CENTER);
  15.     JLabel n= new JLabel("?", JLabel.CENTER);
  16.     JLabel d = new JLabel("?", JLabel.CENTER);
  17.     JLabel o2 = new JLabel("?", JLabel.CENTER);
  18.     JLabel tecla = new JLabel("", JLabel.CENTER);
  19.     char[] palabras = {'h','o','l','a'};
  20.     public MiniAhorcado(){
  21.         super("Bienvenidos al juego del ahorcado");
  22.         setSize(380,110);
  23.         setLocationRelativeTo(null);
  24.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  25.         setLayout(layout);
  26.         add(bienvenida);
  27.         panel.add(h);panel.add(o1);panel.add(l);panel.add(a);
  28.         panel.add(m);panel.add(u);panel.add(n);panel.add(d);panel.add(o2);
  29.         add(panel);
  30.         add(tecla);
  31.         addKeyListener(this);
  32.         setVisible(true);
  33.     }
  34.    
  35.     public void keyTyped(KeyEvent e) {
  36.         char caracter = e.getKeyChar();
  37.         tecla.setText("Tecla Pulsada = '" caracter "'");
  38.         adivina(caracter);
  39.     }
  40.     public void keyPressed(KeyEvent e) {}
  41.     public void keyReleased(KeyEvent e) {}
  42.     public static void main(String[] args) {
  43.         new MiniAhorcado();
  44.     }
  45.     public void adivina(char c){
  46.         switch(c){
  47.         case 'h':
  48.             h.setText("H");
  49.             break;
  50.         case 'o':
  51.             o1.setText("O");
  52.             o2.setText("O");
  53.             break;
  54.         case 'l':
  55.             l.setText("L");
  56.             break;
  57.         case 'a':
  58.             a.setText("A ");
  59.             break;
  60.         case 'm':
  61.             m.setText(" M");
  62.             break;
  63.         case 'u':
  64.             u.setText("U");
  65.             break;
  66.         case 'n':
  67.             n.setText("N");
  68.             break;
  69.         case 'd':
  70.             d.setText("D");
  71.             break;
  72.         }
  73.     }
  74. }

No hay comentarios:

Publicar un comentario