declaraciones para los métodos
keyPressed
,
keyReleased
y
keyTyped
, cada uno de los cuales recibe un objeto
KeyEvent
como argumento. La clase
KeyEvent
es una subclase de
InputEvent
. El método
keyPressed
es lla-
mado en respuesta a la acción de oprimir cualquier tecla. El método
keyTyped
es llamado en respuesta a la acción
de oprimir una tecla que no sea una
tecla de acción
. (Las teclas de acción son cualquier tecla de dirección,
Inicio,
Fin,Re Pág,Av Pág, cualquier tecla de función, Bloq Num,Impr Pant,Bloq Despl,Bloq Mayús y Pausa). El método
keyReleased
es llamado cuando la tecla se suelta después de un evento
keyPressed
o
keyTyped
.
La aplicación de las fi guras 11.36 y 11.37 demuestra el uso de los métodos de
KeyListener
. La clase
Demo-
Teclas
implementa la interfaz
KeyListener
, por lo que los tres métodos se declaran en la aplicación.
El constructor (fi guras 11.36, líneas 17 a 28) registra a la aplicación para manejar sus propios eventos de
teclas, utilizando el método
addKeyListener
en la línea 27. Este método se declara en la clase
Component
, por
lo que todas las subclases de
Component
pueden notifi car a objetos
KeyListener
acerca de los eventos para ese
objeto
Component
.
Figura 11.36
| Manejo de eventos de teclas. (Parte 1 de 2).
1
// Fig. 11.36: MarcoDemoTeclas.java
2
// Demostración de los eventos de pulsación de teclas.
3
import
java.awt.Color;
4
import
java.awt.event.KeyListener;
5
import
java.awt.event.KeyEvent;
6
import
javax.swing.JFrame;
7
import
javax.swing.JTextArea;
8
9
public class
MarcoDemoTeclas
extends
JFrame
implements
KeyListener
10
{
11
private
String linea1 =
""
;
// primera línea del área de texto
12
private
String linea2 =
""
;
// segunda línea del área de texto
13
private
String linea3 =
""
;
// tercera línea del área de texto
14
private
JTextArea areaTexto;
// área de texto para mostrar la salida
15
16
// constructor de MarcoDemoTeclas
17
public
MarcoDemoTeclas()
18
{
19
super
(
"Demostración de los eventos de pulsacion de teclas"
);
20
21
areaTexto =
new
JTextArea(
10
,
15
);
// establece el objeto JTextArea
22
areaTexto.setText(
"Oprima cualquier tecla en el teclado..."
);
23
areaTexto.setEnabled(
false
);
// deshabilita el área de texto
24
areaTexto.setDisabledTextColor(
Color.BLACK
);
// establece el color del texto
25
add( areaTexto );
// agrega areaTexto a JFrame
26
27
addKeyListener(
this
);
// permite al marco procesar los eventos de teclas
28
}
// fin del constructor de MarcoDemoTeclas
29
30
// maneja el evento de oprimir cualquier tecla
31
public void
keyPressed( KeyEvent evento )
32
{
33
linea1 = String.format(
"Tecla oprimida: %s"
,
34
evento.getKeyText( evento.getKeyCode() ) );
// imprime la tecla oprimida
35
establecerLineas2y3( evento );
// establece las líneas de salida dos y tres
36
}
// fin del método keyPressed
37
38
// maneja el evento de liberar cualquier tecla
39
public void
keyReleased( KeyEvent evento )
40
{
41
linea1 = String.format(
"Tecla liberada: %s"
,
42
evento.getKeyText( evento.getKeyCode() ) );
// imprime la tecla liberada
43
establecerLineas2y3( evento );
// establece las líneas de salida dos y tres
11.16 Manejo de eventos de teclas
511
11_MAQ_CAP_11.indd511
4/19/081:26:17AM