martes, 23 de julio de 2013
KeyListener (Programación Java)
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
Suscribirse a:
Enviar comentarios
(
Atom
)
muy buen aporte amigo!!
ResponderEliminarGracias, (Y)
ResponderEliminarMuy util y sencillo, gracias :)
ResponderEliminarMuchas gracias a tí por tu opinión. Y me alegra que te haya sido útil.
Eliminarhola gracias tu post esta muy claro.
ResponderEliminarMuchas gracias amigo Rodrigo!!!
Eliminardeseo capturar la tecla print screen, como puedo hacerlo?
ResponderEliminarHola amigo, implementa este método y me dices si te sirve.
Eliminar@Override
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_PRINTSCREEN) {
System.out.println("Soy print Screen " + e.getKeyCode());
}
}
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
ResponderEliminarHola amigo, validar cuando se digita el caracter?
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarRecien 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