Los eventos Key informan de cu�ndo el usuario ha tecleado algo en el teclado. Espec�fiamente, los evento key son generados por el componente que tiene el foco del teclado cuando el usuario pulsa o libera las teclas del teclado. (Para m�s informaci�n sobre el foco del teclado, puedes ver la p�gina C�mo escribir un Oyente de Focus.)
Se pueden notificar dos tipos b�sicos de eventos key: la pulsaci�n de un caracter Unicode, y la pulsaci�n o liberaci�n de una tecla del teclado. El primer tipo de llama evento key-typed, y el segundo son eventos key-pressed y key-released.
En general, s�lo deber�amos manejar los eventos key-typed a menos que necesitemos saber cuando el usuario ha pulsado teclas que no corresponden con caracteres. Por ejmplo, si queremos saber cuando el usario teclea alg�n caracter Unicode -- siempre como resultado de una pulsaci�n de tecla como 'a' de la pulsaci�n de una secuencia de teclas -- dber�amos manejar eventos key-typed. Por otro lado, si queremos saber cuando el usuario ha pulsado la tecla F1, necesitaremos manejer eventos key-pressed.
Nota: Para generar eventos de teclado, un componente debe tener el foco del teclado. |
Para hacer que un componente obtenga el foco del teclado debemos seguir estos pasos.
- Asegurarnos de que el componente puede obtener el foco del teclado. Por ejemplo, en algunos sistemas las etiquetas no pueden obtenerlo.
- Asegurarnos de que el componente pide el foco en el momento apropiado. Para componentes personalizados, probablemente necesitaremos implementar un MouseListener que llame al m�todo requestFocus cuandos e pulsa el rat�n.
- Si estamos escribiendo un componente personalizado, implementaremos el m�todo isFocusTraversable del componente, para que devuelva true cuando el componente est� activado. esto permie al usuario usar Tab para ir a nuestro componente.
�M�todos de Evento Key
El interface KeyListener y su correspondiente clase adaptador, KeyAdapter, contienen tres m�todos.
- void keyTyped(KeyEvent)
- Se le llama despu�s de que el usuario teclee un caracter Unicode dentro del componente escuchado.
- void keyPressed(KeyEvent)
- Se le llama despu�s de que el usario pulse una tecla mientras el componente escuchado tiene el foco.
- void keyReleased(KeyEvent)
- Se le llama despu�s de que el usario libere una tecla mientras el componente escuchado tiene el foco.
�Ejemplos de manejo de Eventos Key
El siguiente applet demuestra los eventos key. Consiste en un campo de texto en el que podemos teclear informaci�n, seguido de un �rea de texto que muestra un mensaje cada vez que el campo de texto dispara un evento key. Un bot�n en la parte inferior del applet nos permite borrar ranto el campo como el �rea de texto.
Esta es una imagen del GUI del applet. Para ejecutarlo, pulsa sobre ella. El applet aparecer� en una nueva ventana de tu navegador..
Prueba esto:
|
Puedes encontrar el c�digo del applet en KeyEventDemo.java. Aqu� puedes ver el c�digo de manejo de eventos.
public class KeyEventDemo ... implements KeyListener ... { ...//where initialization occurs: typingArea = new JTextField(20); typingArea.addKeyListener(this); ... /** Handle the key typed event from the text field. */ public void keyTyped(KeyEvent e) { displayInfo(e, "KEY TYPED: "); } /** Handle the key pressed event from the text field. */ public void keyPressed(KeyEvent e) { displayInfo(e, "KEY PRESSED: "); } /** Handle the key released event from the text field. */ public void keyReleased(KeyEvent e) { displayInfo(e, "KEY RELEASED: "); } ... protected void displayInfo(KeyEvent e, String s){ ... char c = e.getKeyChar(); int keyCode = e.getKeyCode(); int modifiers = e.getModifiers(); ... tmpString = KeyEvent.getKeyModifiersText(modifiers); ...//display information about the KeyEvent... } }
�La clase KeyEvent
Cada m�todo de evento key tiene un s�lo par�metro: un objeto KeyEvent. La clase KeyEvent define los siguientes m�todos.
- int getKeyChar()
- void setKeyChar(char)
- Obtiene o selecciona el caracter Unicode asociado con este evento.
- int getKeyCode()
- void setKeyCode(int)
- Obtiene o selecciona el c�digo de tecla asociado con este evento. El c�digo de tecla identifica una tecla particular del teclado que el usuario pulsa o libera. La clase KeyEvent define muchas constantes de c�digo de teclas para las m�s utilizadas. Por ejemplo, VK_A especifica la tecla A, y VK_ESCAPE especifica la tecla ESCAPE.
- void setModifiers(int)
- Selecciona el estado de las teclas modificadoras para este evento. Podemos obtener el estados de las teclas modificadores usando el m�todo getModifiers de InputEvent.
- String getKeyText()
- String getKeyModifiersText()
- Devuelve una descripci�n del c�digo de tecla y de la tecla modificadora, respectivamente.
La clase KeyEvent hereda muchos m�todos de InputEvent y ComponentEvent. Los siguientes m�todos est�n descritos en La clase MouseEvent.
- Component getComponent()
- void consume()
- int getWhen()
- boolean isAltDown()
- boolean isControlDown()
- boolean isMetaDown()
- boolean isShiftDown()
- int getModifiers()