Está en la página 1de 7

9.

Manejo de eventos (Mouse y Teclado)


En algunos de los capitulos anteriores ya se ha trabajado con manejadores de eventos
como: ActionListner, ListSelectionlistener, AdjustmenttListener. En este captulo se
har una descripcin ms formal sobre el manejo de eventos y bsicamente se
implementar los eventos del mouse y del teclado.
Un evento es una accin iniciada por un usuario, como por ejemplo al teclear un
carcter o pulsar un botn del ratn. Todo objeto puede ser notificado del evento. Lo
que se tiene que hacer es implementar la interface apropiada y ser registrado como un
oidor del evento en la fuente apropiada. La clase que se utiliza para la generacin de
eventos es java.awt.Event. Los componentes Swing pueden generar muchas clases de
evento. Algunos son:
Tipo de Oidor

Accin o evento

ActionListener
WindowListener
MouseListener
MouseMotionListener
FocusListener
ListSelectionListener

Cuando el usuario pulsa un botn, presiona Enter mientras


teclea en un campo de texto, o elige un tem de men.
El usuario elige un JFrame (ventana principal).
El usuario pulsa un botn del ratn mientras el cursor est
sobre un objeto.
El usuario mueve el cursor sobre un objeto.
El objeto obtiene el foco del teclado.
Cambia la tabla o la seleccin de una lista.

Todo manejador de eventos requiere lo siguiente:

Se debe declarar la clase del manejador de eventos, donde se implementa la


interface del oidor
public class MiClase implements ActionListener {

Asociar los objetos que se quieren escuchar con el oidor.


nombreobjeto.addActionListener(this);

La implementacin de los mtodos de la interface oidora.


public void actionPerformed(ActionEvent e) {
...//codigo de las acciones a realizar...
}

9.1. Eventos del Mouse


Un evento de Mouse ocurre cuando el usuario interacta con el Mouse (o dispositivo
similar) para interactuar con un objeto. Los eventos Mouse ocurren cuando el cursor
entra o sale del rea de pantalla de un objeto, o cuando el usuario pulsa o libera el botn
del ratn.

9.2. Mtodos de Eventos Mouse


La interface MouseListener y su correspondiente clase adaptadora, MouseAdapter,
contiene los siguientes mtodos:

void mouseClicked(MouseEvent): Se invoca despus de que el usuario pulse


sobre el objeto.
void mouseEntered(MouseEvent): Se invoca despus de que el cursor entre en
los lmites del objeto.
void mouseExited(MouseEvent): Se invoca despus de que el cursor salga de
los lmites del objeto.
void mousePressed(MouseEvent) : Se invoca despus de que el usuario pulse
un botn del ratn mientras el cursor est sobre el objeto
void mouseReleased(MouseEvent) : Se invoca despus de que el usuario libere
un botn del ratn despus de una pulsacin sobre un objeto

9.3. Clase MouseEvent


Cada mtodo de evento Mouse tiene un slo parmetro: un objeto MouseEvent. La
clase MouseEvent define los siguientes mtodos:

int getClickCount(): Devuelve el nmero de pulsaciones que el usuario ha


realizado (incluyendo este evento).
int getX(): Obtiene la posicin del ratn en el eje X.
int getY() : Obtiene la posicin del ratn en el eje Y

9.4. Ejemplo prctico eventos Mouse

1
2
3
4

Programa que utilice los eventos del Mouse, para imprimir las coordenadas X y
Y del Mouse.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class EventosRaton extends JApplet implements MouseListener
{
5
public void init()
{
6
addMouseListener(this);
}
7 public void mousePressed(MouseEvent e) {
8
showStatus("Mouse Presionado; # de veces: "+ e.getClickCount()+" en X="+ e.getX()
+ " en Y="+e.getY() );
}
9 public void mouseReleased(MouseEvent e) {
showStatus("Mouse Liberado; # de veces: " + e.getClickCount()+" en X="+ e.getX()+ "
en Y="+e.getY() );
}
10 public void mouseEntered(MouseEvent e) {
11 showStatus("Mouse en pantalla:"+ " en X="+ e.getX()+ " en Y="+e.getY() );
}
12 public void mouseExited(MouseEvent e) {

13

showStatus("Mouse fuera de pantalla"+" en X="+ e.getX()+ " en Y="+e.getY() );


}
14 public void mouseClicked(MouseEvent e) {
15 showStatus("Mouse pulsado:" + " en X="+ e.getX()+ " en Y="+e.getY() );
}
}

Anlisis programa
Lnea 7 - 15: Se define la interface MouseListener, crendose el oidor
addMouseListener en la lnea 6, lo que permitir la creacin de cada mtodo de
eventos del Mouse. Cada mtodo permitir visualizar la operacin realizada con el
Mouse, como tambin la posicin X y Y donde ocurri el evento.
Figura 9.1. Ejecucin programa EventosRaton

9.5. Eventos del Teclado


Un evento de Teclado ocurre cuando el usuario interacta con dicho dispositivo. Cada
vez que el usuario presiona o suelta una tecla se genera un evento de teclado. Se tienen
dos tipos bsicos de eventos key (tecla): la pulsacin de un carcter Unicode, y la
pulsacin o liberacin de una tecla del teclado. El primer tipo de llama evento
keytyped, y el segundo son eventos keypressed y keyreleased.
9.6. Mtodos de Evento Key
La interface KeyListener y su correspondiente clase adaptadora, KeyAdapter,
contienen tres mtodos.

void keyTyped(KeyEvent) : Se invoca despus de que el usuario teclee un


carcter Unicode dentro del objeto escuchado.
void keyPressed(KeyEvent) : Se invoca despus de que el usuario pulsa una
tecla mientras el objeto escuchado tiene el foco.
void keyReleased(KeyEvent) : Se invoca despus de que el usuario libera una
tecla mientras el objeto escuchado tiene el foco.

9.7. Ejemplo prctico eventos teclado


Programa que utilizando eventos de teclado verifique la tecla que fue pulsada
por un usuario.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
44
45
46
47
48
49
50
51

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class EventosTeclado extends JFrame implements KeyListener
{
JTextArea informacion;
JTextField texto;
JPanel principal;
String linea,cadena, codigotecla;
public EventosTeclado()
{
super("Eventos del Teclado");
Container contenedor=getContentPane();
contenedor.setLayout(new FlowLayout());
linea = System.getProperty("line.separator");
texto=new JTextField(20);
informacion=new JTextArea(6,20);
informacion.setEditable(false);
texto.addKeyListener(this);
principal=new JPanel();
principal.add(texto);
JScrollPane visualizacion = new JScrollPane(informacion);
contenedor.add(principal, BorderLayout.NORTH);
contenedor.add(visualizacion, BorderLayout.CENTER);
setSize(300,200);
setVisible(true);
}
public void keyTyped(KeyEvent e) {
char tecla = e.getKeyChar();
int codigo = e.getKeyCode();
if (Character.isISOControl(tecla)) {
cadena = "tecla pulsada = (an unprintable control character)";
}
else {
cadena = "tecla pulsada = '" + tecla + "'";
}
codigotecla ="Codigo Tecla = " + codigo + " ("+ KeyEvent.getKeyText(codigo)+ ")";
informacion.append("EVENTO KEYTYPED: " + linea + " "+ cadena+ linea + " "
+ codigotecla + linea );
}
public void keyPressed(KeyEvent e) {
char tecla = e.getKeyChar();
int codigo = e.getKeyCode();
if (Character.isISOControl(tecla)) {
cadena = "tecla presionada = (caracter de control no imprimible)";
}
else
{
cadena = "tecla presionada = '" + tecla + "'";
}
codigotecla = "Codigo Tecla = " + codigo+ " ("+KeyEvent.getKeyText(codigo)+ ")";
informacion.append("EVENTO KEYPRESSED: "+ linea + " "+ cadena+ linea + " "
+ codigotecla+ linea);
}
public void keyReleased(KeyEvent e) {
char tecla = e.getKeyChar();
int codigo = e.getKeyCode();
if (Character.isISOControl(tecla)) {
cadena = "Tecla liberada = (caracter de control no imprimible)";
}

52

else
{
cadena = "Tecla Liberada = '" + tecla + "'";
}
codigotecla = "Codigo Tecla = " + codigo+ " ("+ KeyEvent.getKeyText(codigo)+ ")";
informacion.append("EVENTO KEYRELEASED: " + linea + " "+ cadena+ linea + "
+ codigotecla+ linea);
}
public static void main(String args[])
{
EventosTeclado ventana = new
EventosTeclado();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

53
54
55
56
58
59

"

Anlisis programa
Lnea 25 - 55: Se define la interface KeyListener, crendose el oidor addKeyListener
en la lnea 17, lo que permitir la creacin de cada mtodo de eventos del teclado. Cada
mtodo permitir visualizar la operacin realizada con el teclado: cdigo de la tecla
pulsada, el evento asociado, la tecla pulsada, as como el cdigo de la tecla cuando es
liberada.
Figura 9.2. Ejecucin programa EventosTeclado

9.8. Ejercicios propuestos


1. Escriba un programa que permita a un usuario dibujar un rectngulo con el
Mouse. Muestre en la barra de estado el rea del triangulo, utilice la formula:
rea=ancho * altura.
2. Realizar un programa que permita al usuario escoger las siguientes figuras:
valos, arcos, lneas, rectngulos. La figura escogida deber dibujarse y en la
barra de estado deber imprimir las coordenadas del Mouse.
3. Hacer un programa que permita dibujar una figura por medio del teclado. La
figura deber dibujarse al pulsar las siguientes teclas: c dibuja un circulo, o
dibuja un ovalo, r dibuja un rectngulo, y l dibuja una lnea.
4. Disear un programa que permita dibujar una figura. La figura se debe escoger
por medio de un cuadro combinado (JCombobox), la opcin de relleno por
medio de botones de opcin (JCheckBox), el color deseado por medio de un
JList (lista).
5. Elaborar un programa que dibuje un cuadrado, Conforme el Mouse se mueva el
cuadrado deber dibujarse en la direccin del Mouse.
6. Crear un programa que permita escoger una figura, por medio de las teclas: r
rellenar la figura, s sin relleno, n color de la figura naranja, o color de la figura
rojo, a color de la figura azul.
7. Hacer un programa que permita al usuario escoger una figura para dibujarse 20
veces en forma aleatoria.
8. Escribir un programa que muestre colores diferentes en 10 cuadros. El usuario
por medio de un JListBox escoger una figura. Con el Mouse el usuario
seleccionar un color y la figura escogida deber cambiar al color escogido.
9. Disear un programa que permita dibujar con el Mouse. Adems incluya una
barra de herramientas que permita cambiar lo dibujado por otro color. La barra
de herramientas se debe generar con botones de opcin.
10. Elaborar un programa que permita dibujar una figura. Con el Mouse el usuario
podr escoger una nueva posicin y la figura deber redibujarse en esta nueva
posicin.

También podría gustarte