Publicado el 17 de Septiembre del 2018
645 visualizaciones desde el 17 de Septiembre del 2018
148,9 KB
7 paginas
Creado hace 19a (09/12/2004)
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
3 Eventos de teclado y de ventana
La Güeb de Joaquín
Programación JAVA
INTERFAZ GRÁFICO DE USUARIO
EVENTOS
3 EVENTOS DE TECLADO Y DE VENTANA
3 EVENTOS DE TECLADO Y DE VENTANA
3.1 Introducción
3.2 Eventos de teclado
3.3 Eventos de ventana
3.1 Introducción
Los eventos de teclado se capturan haciendo uso de los siguientes interfaces (o adaptadores) y
eventos:
Evento
KeyEvent
WindowEvent
Interface
KeyListener
WindowListener
Adaptador
KeyAdapter
WindowAdapter
Imagen 080301
A continuación, se presenta un resumen de los objetos más importantes en el proceso de
tratamiento de eventos de teclado y de ventana:
1
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
3 Eventos de teclado y de ventana
• keyPressed(KeyEvent e) Se ha presionado una tecla
• kevReleased(KevEvent e) Se ha terminado la presión de una tecla
• keyTyped(KeyEvent e) Se ha presionado (en algunas ocasiones presionado y soltado)
KeyListener
una tecla
WindowListener
• windowActivated(windowEvent e) La ventana pasa a ser la activa
• windowDeactivated(windowEvent e) La ventana deja de ser la activa
• windowOpened(windowEvent e) La primera vez que la ventana se hace visible
• windowClosing(windowEvent e) El usuario indica que se cierre la ventana
• windowClosed(windowEvent e) La ventana se ha cerrado
• windowIconified(windowEvent e) La ventana pasa de estado normal a un estado
• windowDeiconified(windowEvent e) La ventana pasa de estado minimizado a un
minimizado
estado normal
KeyEvent
• Char getKeyCgar() Devuelve el carácter asociado con la tecla pulsada
•
Int getKeyCode() Devuelve el valor entero que representa la tecla pulsada
• String getKeyText() Devuelve un textoq ue representa el codigo de la tecla
• Object getSource() Método perteneciente a la clase EventObject. Indica el objeto que
produjo el evento
WilidowEvent
• Window getWindow() Devuelve la ventana que origina el evento
• Window getOppositeWindow() Devuelve la ventana involucrada en el cambio de
•
•
activación o de foco
int getNewState() Para WINDOW _STATE_CHANGED indica el nuevo estado de la
ventana
int getOldState() Para WINDOW_STATE_CHANGED indica el antiguo estado de la
ventana
• Object getSource() Método perteneciente a la clase EventObject. Indica el objeto Que
produjo el evento
3.2 Eventos de teclado
En este apartado vamos a desarrollar dos ejemplos que muestran el uso del interfaz
KeyListener, la clase KeyAdapter y el evento KeyEvent.
En el primer ejemplo utilizamos una clase de tratamiento de eventos de teclado
(InterrupcionDeTecladol) que escribe un texto por consola cada vez que se activa uno de los
2
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
3 Eventos de teclado y de ventana
tres métodos que proporciona el interfaz KeyListener. Los métodos keyTyped, keyPressed y
keyReleased se implementan en las líneas 5, 9 Y 13.
Clase InterrupcionDeTeclado1
1 import java.awt.event.*;
2
3 public class InterrupcionDeTeclado1 implements KeyListener {
4
5 public void keyTyped(KeyEvent EventoQueLlega){
6 System.out.println("Tecla pulsada y soltada");
7 }
8
9 public void keyPressed(KeyEvent EventoQueLlega){
10 System.out.println("Tecla pulsada");
11 }
12
13 public void keyReleased(KeyEvent EventoQueLlega){
14 System.out.println("Tecla soltada");
15 }
16
17 }
Para probar el funcionamiento de la clase anterior, creamos PruebaEventos Tecladol (línea 3),
que incorpora un GUI en el que al panel MiPanelle añadimos una instancia del Listener
InterrupcionDeTecladol (línea 13).
Clase PruebaEventosTeclado1
1 import java.awt.*;
2
3 public class PruebaEventosTeclado1 {
4
5 public static void main(String[] args) {
6
7 Frame MiFrame = new Frame("Prueba eventos de raton");
8 Panel MiPanel = new Panel();
9 MiFrame.add(MiPanel);
10 MiFrame.setSize(200,300);
11 MiFrame.show();
12
13 MiPanel.addKeyListener(new InterrupcionDeTeclado1());
14
15 }
16 }
Imagen 080302
3
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
3 Eventos de teclado y de ventana
Según el tipo de tecla pulsada (letras, teclas de función, etc.), la activación del evento
keyTyped puede variar.
Nuestro segundo ejemplo imprime por consola los caracteres tecleados hasta que pulsamos el
asterisco, momento en el que abandonamos de la aplicación. Para conseguir esta
funcionalidad, nos basta con hacer uso de un solo método del interfaz KeyListener. Para
facilitamos
la clase
InterrupcionDeTeclado2), sobrecargando únicamente el método keyTyped (cualquiera de los
otros dos métodos nos hubiera servido de igual manera).
En el método keyTyped (línea 5) imprimimos (línea 6) el carácter correspondiente a la tecla
pulsada; este carácter lo obtenemos invocando al método getKeyChar perteneciente a la clase
KeyEvent. Posteriormente, consultamos si su valor es un asterisco (línea 7), en cuyo caso
abandonamos la aplicación (línea 8).
labor empleamos el adaptador KeyAdapter
(línea 3 de
la
Clase InterrupcionDeTeclado2
1 import java.awt.event.*;
2
3 public class InterrupcionDeTeclado2 extends KeyAdapter {
4
5 public void keyTyped(KeyEvent e){
6 System.out.print(e.getKeyChar());
7 if (e.getKeyChar()=='*')
8 System.exit(0);
9 }
10
11 }
Tal y como hemos venido haciendo en ejercicios anteriores, implementamos una clase que
incorpora un GUI con algún elemento al que se le añade la rutina de tratamiento de
interrupción. En este caso la clase es PruebaEventosTeclado2 (línea 3) y el método
addKeyListener se utiliza en la línea 17.
Clase PruebaEventosTeclado2
1 import java.awt.*;
2
3 public class PruebaEventosTeclado2 {
4
5 public static void main(String[] args) {
6
7 Frame MiFrame = new Frame("Prueba eventos de raton");
8 Panel MiPanel = new Panel();
9 Button Boton1 = new Button("Silencio");
10 Button Boton2 = new Button("Máquina de escribir");
11 MiPanel.add(Boton1);
12 MiPanel.add(Boton2);
13 MiFrame.add(MiPanel);
14 MiFrame.setSize(200,300);
15 MiFrame.show();
16
17 Boton2.addKeyListener(new InterrupcionDeTeclado2());
18
4
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
3 Eventos de teclado y de ventana
Imagen 080303a
Imagen 080303b
19 }
20 }
3.3 Eventos de ventana
En este apartado vamos a desarrollar un solo ejemplo que muestra el uso del interfaz
WindowListener y el evento WindowEvent. Simplemente, implementamos los métodos del
interfaz WindowListener para que imprima, cada uno, un texto significativo del evento.
Clase InterrupcionDeVentana1
1 import java.awt.event.*;
2
3 public class InterrupcionDeVentana1 implements WindowListener {
4
5 public void windowOpened(WindowEvent e) {
6 System.out.println("Ventana " + e.getWindow().getName() +
"abierta");
7 }
8
9 public void windowClosing(WindowEvent e) {
10 System.out.println("Si pulsas aqui se cierra la ventana "+
e.getWindow().getName() );
11 // System.exit(0);
12 }
13
14 public void windowClosed(WindowEvent e) {
15 System.out.println("Ventana " + e.getWindow().getName() +
" cerrada");
16 }
17
18 public void windowActivated(WindowEvent e) {
19 System.out.println("Ventana " + e.getWindow().getName() +
" activa (en uso)");
20 }
21
22 public void windowDeactivated(WindowEvent e) {
23 System.out.println("Ventana " + e.getWindow().getName() +
" desactivada (fuera de uso)");
24 }
25
5
Java - Interfaz Gráfico De Usuario (AWT) - Eventos
3 Eventos de teclado y de ventana
26 public void windowIconified(WindowEvent e) {
27 System.out.println("Ventana " + e.getWindow().getName() +
" minimizada");
28 }
29
30 public void windowDeiconified(WindowEvent e) {
31 System.out.println("Ventana " + e.getWindow().getName() +
" restaurada");
32 }
33
34 }
El programa de prueba PruebaEventosVentanal crea dos marcos (líneas 7 y 11) Y les añade
instancias de la clase de tratamiento de eventos de ventana InterrupcionDe Ventanal,
haciendo uso del método addWindow Listener (líneas 16 y 17).
Clase PruebaEventosVentana1
1 import java.awt.*;
2
3 public class PruebaEventosVentana1 {
4
5 public static void main(String[] args) {
6
7 Frame MiFrame = new Frame("Prueba eventos de ventana");
8 MiFrame.setSize(200,100);
9 MiFrame.show();
10
11 Frame OtroFrame = new Frame("Prueba eventos de ventana");
12 OtroFrame.setSize(100,50);
13 OtroFrame.setLocation(200,0);
14 OtroFrame.show();
15
16 MiFrame.addWindowListener(new InterrupcionDeVentana1());
17 OtroFrame.addWindowListener(new InterrupcionDeVentana1());
18
19 }
20 }
Comentarios de: Interfaz gráfica de usuario - Eventos (0)
No hay comentarios