Noticias

* Completa este formulario para conocer los temas de tu interes, te tomará unos segundos.
* Nuevos temas en CAKEPHP
* Ahora puedes bajar los proyectos finalizados!
* Sigue a la página para seguir creciendo!!

martes, 23 de julio de 2013

KeyListener (Programación Java)

12 comentarios :
Esta interface no sirve para crear o ejecutar eventos cuando presionamos, escribimos o soltamos una tecla. Por ejemplo si en un formulario queremos que cuando se presione enter se envíe la información con esta interface lo lograremos.

Primero importaremos la librería de la clase:
 
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

Para que nuestra clase pueda usar esta interface debemos implementarla de la siguiente manera:
 
public class EscucharTeclas extends JFrame implements KeyListener {}

Esto nos creará tres metodos por defecto para las acciones antes dichas (presionar, escribir, soltar) sobre las teclas. Si utilizamos un IDE nos lo genera automaticamente pero sino acá dejo los tres métodos:
 
 @Override
 public void keyPressed(KeyEvent e) {}

 @Override
 public void keyReleased(KeyEvent e) {}

 @Override
 public void keyTyped(KeyEvent e) {}

Crearemos una clase que implemente esta interface y que contenga un botón:
 
 private JButton getbAceptar() {
  bAceptar = new JButton("Aceptar");
                // Acá es donde se le dice que escuche a las teclas
  bAceptar.addKeyListener(this);
  bAceptar.setBounds(10, 10, 100, 20);
  return bAceptar;
 }

En cada método de los anteriores colocaremos una salida a consola de la siguiente manera:
 
 @Override
 public void keyPressed(KeyEvent e) {

  int key = e.getKeyCode();

  if (key == KeyEvent.VK_ENTER) {

   System.out.println("Presionó Enter!" + (char) key);
  }
  if (key == KeyEvent.VK_SPACE) {

   System.out.println("Presionó Espacio!" + (char) key);
  }

 }

 @Override
 public void keyReleased(KeyEvent e) {
  System.out.println("Soltó una tecla");
 }

 @Override
 public void keyTyped(KeyEvent e) {
  System.out.println("Escribió una tecla");
 }import javax.swing.JTabbedPane;

Nuestra clase final quedaría así y con esto ya tenemos un ejemplo demasiado sencillo para entender su utilización.
 
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;

@SuppressWarnings("serial")
public class EscucharTeclas extends JFrame implements KeyListener {

 private JButton bAceptar;

 public EscucharTeclas() {

  add(getbAceptar());
  inicializador();
 }

 private void inicializador() {

  setLayout(null);
  setTitle("Prueba con Teclas");
  setVisible(true);
  setSize(300, 300);
  setLocationRelativeTo(null);
  setDefaultCloseOperation(EXIT_ON_CLOSE);

 }

 private JButton getbAceptar() {
  bAceptar = new JButton("Aceptar");
  bAceptar.addKeyListener(this);
  bAceptar.setBounds(10, 10, 100, 20);
  return bAceptar;
 }

 @Override
 public void keyPressed(KeyEvent e) {

  int key = e.getKeyCode();

  if (key == KeyEvent.VK_ENTER) {

   System.out.println("Presionó Enter!" + (char) key);
  }
  if (key == KeyEvent.VK_SPACE) {

   System.out.println("Presionó Espacio!" + (char) key);
  }

 }

 @Override
 public void keyReleased(KeyEvent e) {
  System.out.println("Soltó una tecla");
 }

 @Override
 public void keyTyped(KeyEvent e) {
  System.out.println("Escribió una tecla");
 }

}

Documentación Java:
Key Listener: http://docs.oracle.com/javase/6/docs/api/java/awt/event/KeyListener.html
Key Event: http://docs.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.html

12 comentarios :

  1. Respuestas
    1. Muchas gracias a tí por tu opinión. Y me alegra que te haya sido útil.

      Eliminar
  2. deseo capturar la tecla print screen, como puedo hacerlo?

    ResponderEliminar
    Respuestas
    1. Hola amigo, implementa este método y me dices si te sirve.

      @Override
      public void keyReleased(KeyEvent e) {
      int key = e.getKeyCode();
      if (key == KeyEvent.VK_PRINTSCREEN) {

      System.out.println("Soy print Screen " + e.getKeyCode());
      }
      }

      Eliminar
  3. Me ayudaría bastante si me enseñas en un post a como validar datos de numeros y caracteres ... gracias y esta interesante tu post Saludos

    ResponderEliminar
    Respuestas
    1. Hola amigo, validar cuando se digita el caracter?

      Eliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  5. Recien veo esto, se que es un poco tarde, pero me gustaria saber si podrias ayudar a implementar esto en un hilo, ya que quiero mover una imagen que conectada a un hilo mediante JButtons, tengo una idea, pero necesito ayuda en eso aun, gracias por el aporte

    ResponderEliminar