Manejo de eventos:
Teoría fundamental.
Funciones de retro invocación. Manejo de eventos GUI: de acción, de ventana,
del ratón y de enfoque.
Primero hay que
saber ¿Que es un EVENTO?
Las aplicaciones de Java pueden crear
interfaces de usuario, y así permitir que estos últimos lleven a cabo tareas de
aplicaciones. Dentro de estas interfaces el código de Java debe ser capaz de
responder a la interacción y adaptar el procesamiento a las acciones que el
usuario realice. Los eventos de Java son un elemento clave para esta técnica,
ya que proporcionan programas con la capacidad para detectar dicha interacción
del usuario.
MANEJO DE EVENTOS
GUI
Las GUI están controladas por
eventos, alguno de estos eventos son, mover el Mouse, seleccionar o escribir en
un campo de texto, hacer click en un botón, ya sea en la pantalla o en el Mouse
etc.
Cuando ocurre una interacción con
el usuario, se envía un mensaje al programa. La información de los eventos
de la GUI se almacena en un objeto de la clase que extiende a AWTEvent.
Los Tipos de eventos del paquete
java.awt.event se utilizan con componentes de AWT y de Swing. Los tipos de
eventos adicionales, específicos para SPNG, se declaran en el paquete
javax.swing.event.
El mecanismo de eventos consta de
tres partes:
·
El origen del evento
·
El objeto del evento
·
El componente de escucha del evento
Origen del evento: Es el componente de
la GUI específico con el cual interactúa el usuario.
Objeto del evento: Es el encargado de
encapsular la información acerca del evento que ocurrió. Esta
información incluye una referencia al origen del evento y cualquier información específica
del evento que pueda ser requerida por el objeto escucha.
Objeto escucha: Es un objeto que
recibe la notificación del origen del evento cuando este ocurre; en efecto
“escucha” a la espera de un evento y se ejecuta en respuesta a ese evento.
El programador debe realizar dos
tareas clave para procesar un evento de interfaz grafica de usuario en un
programa.
·
Primero: debe registrar un componente de
escucha del evento para el componente de la GUI que se espera que genere ese
evento.
·
Segundo: debe implementar un manejador
para ese evento.
Básicamente un componente de escucha
para un evento GUI es un objeto de una clase que implementa a una o más de las
“interfaces de componentes” de escucha de eventos de los paquetes java.awt.event
y javax.swing.event.
Cada interfaz de escucha de eventos
especifica uno o más métodos manejadores de eventos que deben declararse en la
clase que lo implemente (que implemente dicha interfaz) esto es porque la
interfaz al ser abstracta y como toda clase abstracta debe implementar todos
sus métodos.
En el momento que ocurre un evento,
el componente de la GUI con el que el usuario interactuó notifica a sus
componentes de escucha registrados, llamando al método manejador de eventos
apropiado de cada componente de escucha.
En Java podemos distinguir dos clases
de eventos:
- Eventos generales o simples: son eventos producidos por
una acción general. Por ejemplo, pulsar una tecla, mover el ratón...etc.
En la tabla siguiente se muestran los eventos estándar para el teclado y
el ratón:
EVÉNTOS ESTÁNDAR PARA TECLADO Y RATÓN
|
||
ID
del evento
|
Método
|
Descripción
|
KEY_PRESS
|
keyDown(Event,int)
|
Pulsar una tecla
|
KEY_RELEASE
|
keyUp(Event,int)
|
Soltar una tecla
|
KEY_ACTION
|
keyDown(Event,int)
|
Pulsar una tecla de
función
|
KEY_ACTION_RELEASE
|
keyUp(Event,int)
|
Soltar una tecla de función
|
MOUSE_DOWN
|
mouseDown(Event,int,int)
|
Pulsar el ratón
|
MOUSE_UP
|
mouseUp(Event,int,int)
|
Movimiento hacia arriba del
ratón
|
MOUSE_MOVE
|
mouseMove(Event,int,int)
|
Movimiento del ratón
|
MOUSE_ENTER
|
mouseEnter(Event,int,int)
|
Movimiento de entrada del
ratón
|
MOUSE_EXIT
|
mouseExit(Event,int,int)
|
Movimiento de salida del
ratón
|
MOUSE_DRAG
|
mouseDrag(Event,int,int)
|
Arrastrar el ratón
|
- Eventos
específicos: son los eventos que más nos interesan en
este capítulo y son los eventos que se utilizan con más frecuencia en AWT.
Imagine, por ejemplo, un caso en el que tengamos varios botones. Si cada
botón, al ser pulsado, no generase un evento único ¿cómo reconoceríamos el
botón que ha sido pulsado?. Por esta razón, existen los llamados eventos
específicos, en el sentido de que contienen más información que los
eventos generales sobre el componente que ha generado el evento.
Los eventos generados por componentes aparecen en la siguiente tabla:
EVENTOS GENERADOS POR COMPONENTES
|
||
Componente
|
ID del evento
|
Descripción
|
Button
|
ACTION_EVENT
|
El
usuario ha hecho click.
|
Check Box
|
ACTION_EVENT
|
El usuario ha pulsado una casilla
de activación.
|
Choice
|
ACTION_EVENT
|
El
usuario ha seleccionado un
elemento.
|
Component
|
GOT_FOCUS
|
Obtiene el foco de entrada.
|
Component
|
KEY_ACTION
|
El
usuario ha pulsado una tecla
de
función.
|
Component
|
KEY_ACTION_RELEASE
|
El usuario ha soltado una tecla
de función.
|
Component
|
KEY_PRESS
|
El
usuario ha pulsado una tecla.
|
Component
|
KEY_RELEASE
|
El usuario ha soltado una tecla.
|
Component
|
LOST_FOCUS
|
Se ha
perdido el foco de entrada.
|
Component
|
MOUSE_ENTER
|
El ratón ha entrado en un
componente.
|
Component
|
MOUSE_EXIT
|
El
ratón ha salido de un
componente.
|
Component
|
MOUSE_DOWN
|
Se ha pulsado un botón del
ratón.
|
Component
|
MOUSE_UP
|
Se ha
soltado un botón del
ratón.
|
Component
|
MOUSE_MOVE
|
El usuario ha movido el ratón.
|
Component
|
MOUSE_DRAG
|
Se
arrastró el ratón.
|
List
|
ACTION_EVENT
|
El usuario ha hecho doble click
sobre una lista de elementos.
|
List
|
LIST_SELECT
|
El
usuario ha seleccionado un
elemento
de la lista.
|
List
|
LIST_DESELECT
|
El usuario ha anulado la sele-
cción de un elemento de la lista.
|
Menu Item
|
ACTION_EVENT
|
Se ha
seleccionado un elemento
del
menú.
|
ScrollBar
|
SCROLL_LINE_UP
|
El usuario ha solicitado un des-
plazamiento ascendente de una
línea.
|
ScrollBar
|
SCROLL_LINE_DOWN
|
El
usuario ha solicitado un des-
plazamiento
descendente de una
línea.
|
ScrollBar
|
SCROLL_PAGE_UP
|
El usuario ha solicitado un des-
plazamiento ascendente de una
página.
|
ScrollBar
|
SCROLL_PAGE_DOWN
|
El
usuario ha solicitado un des-
plazamiento
descendente de una
página.
|
ScrollBar
|
SCROLL_ABSOLUTE
|
El usuario ha solicitado un cam-
bio absoluto.
|
TestField
|
ACTION_EVENT
|
Se ha
pulsado la tecla "Return".
|
Window
|
WINDOW_DESTROY
|
La ventana se ha destruido.
|
Window
|
WINDOW_ICONIFY
|
La
ventana se ha transformado
en
icono.
|
Window
|
WINDOW_DEICONIFY
|
El icono se ha transformado en
ventana.
|
Window
|
WINDOW_MOVED
|
Se ha
movido la ventana.
|
0 comentarios:
Publicar un comentario