Manejo de Eventos.
Que son los eventos?
Los eventos son las acciones que suceden al ejecutar alguna invocación, un evento es
una acción que se puede controlar.
Cada vez que el usuario teclea un carácter o pulsa un botón del ratón, ocurre un evento
(Event). Cualquier objeto puede ser notificado del evento. Únicamente debe
implementar la interfaz apropiada y ser registrado como un oyente (Listener) del evento
apropiado. Los objetos registrados como oyentes se denominan también manejadores
de eventos. Los componentes Swing pueden generar muchas clases de evento.
Cada evento está representado por un objeto que ofrece información sobre el evento e
identifica la fuente. Las fuentes de los eventos normalmente son componentes Swing,
pero otros tipos de objetos también pueden ser fuente de eventos.
Fig. 1 Oyentes atendiendo a un evento
En resumen al interactuar con la aplicación, el usuario:
- Acciona componentes( ActionEvent ).
- El usuario pulsa un botón.
- El usuario termina de introducir un texto en un campo y presiona Enter.
- El usuario selecciona un elemento de una lista pulsando el preferido (o de un
menú) .
- Pulsa o suelta botones del ratón( MouseEvent ).
- Minimiza, cierra o manipula una ventana ( WindowEvent ).
- Escribe con el teclado (KeyEvent).
- Descubre porciones de ventanas (PaintEvent).
Eventos ligados al mouse:
Como funciona estos eventos de mouse?
Si el usuario pulsa con el ratón sobre el botón se lanza un evento del tipo MouseEvent. Si no hay ningún
objeto que recoja ese evento no sucede nada.
Los escuchadores se registran en un componente. Por ejemplo, en un botón podemos
registrar un escuchador de eventos de ratón.
Una vez que el escuchador ha sido añadido al componente, cuando se produzca un
evento, los métodos apropiados del manipulador (que han sido especiados en la
interfaz) serán llamados.
En una GUI colocamos una serie de componentes entre los cuales se encuentra un JButton. Este componente
es una fuente de eventos de mouse. Ahora registramos un oyente de eventos de mouse en el botón.
Si el usuario pulsa con el mouse sobre el botón se lanza un evento del tipo MouseEvent. Los oyentes que
se hayan registrados son notificados de que se ha producido un evento.
Hay dos clases de eventos:
- Eventos de componente o de bajo nivel ocurren cuando ocurre algo específico
en un componente. Por ejemplo al moverse, entrar o salir el mouse sobre un
componente, al ganar o perder la atención.
- Eventos semánticos no son tan específicos como los anteriores y no son
disparados necesariamente por una acción atómica tal y como una pulsación del
mouse. Las acciones que disparan estos eventos depende del objeto: por
ejemplo en una lista se disparan cuando sus elementos son pulsados dos veces,
en un campo de texto se disparan cuando se pulsa la tecla enter.
La jerarquía de estas clases se muestra en el siguiente diagrama:
Vamos a ver ahora algunas de las interfaces que se ofrecen en [Link] con el fin de
especificar los métodos que deben poseer los objetos oyentes o auditores para cada
uno de los eventos.
MouseListener
Esta interfaz la deben implementar aquellas clases que estén interesadas en escuchar
eventos del tipo MouseEvent.
El objeto de esta clase debe registrarse en un componente utilizando su método
addMouseListener.
Los métodos que define esta interfaz son:
// Metodo llamado cuando se pulsa y libera un botón del ratón sobre un componente
void mouseClicked(MouseEvent e )
// Metodo llamado cuando el raton entra en un componente
void mouseEntered(MouseEvent e )
// Método llamado cuando el ratón sale de un componente
void mouseExitedMouseEvent e )
// Método llamado al pulsar un botón del ratón sobre un componente
void mousePressed (MouseEvent e )
// Metodo llamado al liberar un botón del ratón sobre un componente
void mouseReleased(MouseEvent e )
EVENTOS DE TECLADO
Se implementa una interface, en este caso la elegida es
la KeyListener, que nos provee los métodos para controlar los
eventos del teclado...
Al implementar la interface debemos implementar también los
métodos que la componen, veamos cuales son y su funcionamiento
básico:
keyPressed(KeyEvent e): Se ejecuta cuando el usuario presiona
una tecla.
keyReleased(KeyEvent e): Se ejecuta cuando el usuario libera
una tecla
keyTyped(KeyEvent e): Se ejecuta cuando el usuario presiona
una tecla, pero solo cuando la tecla corresponde a caractéres, teclas
especiales como F1, F2 entre otras no son identificadas.
Eventos: Teclado(KeyEvent)
keyListener: Metodos
KeyPressed(KeyEvent e);
KeyReleased(KeyEvent e);
KeyTyped(KeyEvent e)
Evento teclado (KeyEvent e):
[Link]();
e. getKeyCode();
[Link]();
[Link]();
[Link]();
Constantes: VK_B, VK_ALT, VK_F2….