Вы находитесь на странице: 1из 29

TPICOS AVANZADOS DE

PROGRAMACIN
EVENTOS EN JAVA
ISC. ADOLFO MORALES MARTNEZ, MAN.

EVENTOS EN JAVA
Cuando el usuario de un programa o applet mueve el ratn, o hace
un clic o usa el teclado, genera un Evento. En Java los eventos,
como cualquier otra cosa, se representan como instancias u
objetos de alguna clase. Para programar una interfaz grfica es
necesario aprender a utilizar los eventos.
De acuerdo con Javasoft, las principales caractersticas de partida
que han originado el nuevo modelo de manejo de eventos en el
AWT, son:

Que sea simple y fcil de aprender


Que soporte una clara separacin entre el cdigo de la aplicacin
y el cdigo del interfaz

EVENTOS EN JAVA
Que facilite la creacin de robustos controladores de eventos, con
menos posibilidad de generacin de errores (chequeo ms potente en
tiempo de compilacin)

Suficientemente flexible para permitir el flujo y propagacin de eventos


Para herramientas visuales, permitir en tiempo de ejecucin ver cmo
se generan estos eventos y quien lo hace

Que soporte compatibilidad binaria con el modelo anterior


Los eventos ahora estn organizados en jerarquas de clases de eventos.
El nuevo modelo hace uso defuentesde eventos (Source)
yreceptoresde eventos (Listener). Una fuente de eventos es un objeto
que tiene la capacidad de detectar eventos y notificar a los receptores
de eventos que se han producido esos eventos. Aunque el programador
puede establecer el entorno en que se producen esas notificaciones,
siempre hay un escenario por defecto.

EVENTOS EN JAVA
Un objeto receptor de eventos es una clase (o una subclase de una clase)
que implementa un interfaz receptor especfico. Hay definidos un
determinado nmero de interfaces receptores, donde cada interfaz declara
los mtodos adecuados al tratamiento de los eventos de su clase. Luego,
hay un emparejamiento natural entre clases de eventos y definiciones de
interfaces. Por ejemplo, hay una clase de eventos de ratn que incluye
muchos de los eventos asociados con las acciones del ratn, y hay un
interfaz que se utiliza para definir los receptores de esos eventos.
Un objeto receptor puede estar registrado con un objeto fuente para ser
notificado de la ocurrencia de todos los eventos de la clase para los que el
objeto receptor est diseado. Una vez que el objeto receptor est
registrado para ser notificado de esos eventos, el suceso de un evento en
esta clase automticamente invocar al mtodo sobrescrito del objeto
receptor. El cdigo en el mtodo sobrescrito debe estar diseado por el
programador para realizar las acciones especficas que desee cuando
suceda el evento.

EVENTOS EN JAVA
Algunas clases de eventos, como los de ratn, involucran a un
determinado conjunto de eventos diferentes. Una clase receptor
que implemente el interfaz que recoja estos eventos debe
sobrescribir todos los mtodos declarados en el interfaz. Para
prevenir esto, de forma que no sea tan tedioso y no haya que
sobrescribir mtodos que no se van a utilizar, se han definido un
conjunto de clases intermedias, conocida como
clasesAdaptadoras(Adapter).
Estas clases Adaptadores implementan los interfaces receptor y
sobrescriben todos los mtodos del interfaz con mtodos vacos.
Una clase receptor puede estar definida como clase que extiende
una claseAdapteren lugar de una clase que implemente el
interfaz. Cuando se hace esto, la clase receptor solamente necesita
sobrescribir aquellos mtodos que sean de inters para la
aplicacin, porque todos los otros mtodos sern resueltos por la
claseAdapter

EVENTOS EN JAVA
Uno de los objetos receptor que se implementan con mayor
frecuencia son los de la interfazWindowListeneren el manejo de
ventanas, lo que haria necesario sobreescribir los seis mtodos de
la interfaz.Por lo que la otra clase receptor que se extiende es la
claseWindowAdapteren
vez
de
implementar
la
interfazWindowListener.La claseWindowAdaptersobrescribe
los seis mtodos de la interfaz con mtodos vacos, por lo que la
clase receptor no necesita sobreescribir esos seis mtodos solo el
que necesita.

EVENTOS EN JAVA
Gestin de Eventos
El paquete java.awt.event es el que contiene la mayor parte de las
clases e interfaces de eventos.El modelo de delegacin de
eventos es un concepto que trabaja de la siguiente manera:

Una fuente genera un evento y lo enva a uno a ms oyentes o


auditores, que han estado simplemente esperando hasta que
reciben ese evento y una vez recibido lo procesan y lo devuelven.
Una fuente es un objeto que genera un evento. Esto ocurre cuando
cambia de alguna manera el estado interno de ese objeto. Las
fuentes pueden generar ms de un tipo de eventos.

EVENTOS EN JAVA
Una fuente tiene que ir acompaada de auditores para que estos
reciban las notificaciones sobre el tipo especfico de evento, cada
tipo de evento tiene su propio mtodo de registro. La forma general
es:
Public void addTypeListener(TypeListener el)
Por ejemplo el mtodo que registra o acompaa a un auditor de
evento de teclado es addKeyListener( ). Cuando ocurre un evento,
se notifica a todos los auditores registrados, que reciben una copia
del objeto evento. Esto es lo que se conoce como multicasting del
evento.

EVENTOS EN JAVA
Una fuente tambin puede proporcionar un mtodo que permita a
un auditor eliminar un registro en un tipo especfico de evento y la
forma general es:
Public void removeTypeListener(TypeListener el);
Aqu Type es el nombre del evento y el es una referencia al auditor.
Por ejemplo para borrar un auditor del teclado se llamara
removeKeyListener( ).

EVENTOS EN JAVA
Auditores de eventos.
Un auditor es un objeto que es avisado cuando ocurre un evento.
Tiene dos requisitos principales. Primero tiene que ser registrado o
ir acompaado por una o ms fuentes para recibir notificaciones
sobre los tipos especficos de eventos. Segundo, tiene que
implementar mtodos para recibir y procesar notificaciones.

EVENTOS EN JAVA
Clases de eventos principales en java.awt.event

Clase de evento
ActionEvent

Descripcin
Se genera cuando se presiona un botn, se hace doble clic en un
elemento de una lista, o se selecciona un elemento de tipo men.

AdjustmentEvent

Se genera cuando se manipula un scrollbar.

ComponentEvent

Se genera cuando un componente se oculta, se mueve, se cambia


de tamao o se hace visible.

ContainerEvent

Se genera cuando se aade o se elimina un componente de un


contenedor.

EVENTOS EN JAVA
FocusEvent

Se genera cuando un componente gana o pierde el foco.

InputEvent

Superclase abstracta de cualquier clase de evento de entrada de componente.

ItemEvent

Se genera cuando se hace click en un checkbox o en un elemento de una


lista; tambien ocurre cuando se hace una seleccin en una opcin choice o
cuando se selecciona o deselecciona un elemento de un men de opciones.

KeyEvent

Se genera cuando se recibe una entrada desde el teclado.

MouseEvent

Se genera cuando el ratn se arrastra, se mueve, se hace clic, se presiona, o


se libera; tambin se genera cuando el ratn entra o sale de un componente.

TextEvent

Se genera cuando se cambia el valor de un rea de texto o un campo de texto

WindowEvent

Se genera cuando una ventana se activa, se cierra, se desactiva, se minimiza,


se maximiza, se abre, o se sale de ella.

EVENTOS EN JAVA
ActionEvent
Define cuatro constantes enteras que se pueden utilizar para
identificar cualquier modificador asociado con este tipo de evento:
ALT_MASK,CTRL_MASK,META_MASK,SHIFT_MASK una ltima constante
entera ACTION_PERFORMED que se utiliza para identificar eventos de
accin.
Para identificar el evento de accin generado se utiliza el mtodo
String getActionCommand( )
getSource( ) devuelve el objeto del tipo que genero el evento.
Para identificar el tipo de tecla modificadora se uso se utiliza el mtodo
int getModifiers( )

EVENTOS EN JAVA
AdjustmentEvent
En este tipo de evento hay cinco constantes enteras que definen la
actividad realizada por este evento:
BLOCK_DECREMENT el usuario hace click dentro de la scrollbar
para decrementar su valor.
BLOCK_INCREMENT el usuario hace click dentro de la scroll bar
para incrementar su valor.
TRACKse arrastra el botn movible de la scroll bar
UNIT_DECREMENT se ha hecho click en el botn que esta al final de
la scroll bar para decrementar su valor
UNIT_INCREMENT se ha hecho click en el botn que esta al final de
la scroll bar para incrementar su valor

EVENTOS EN JAVA
Adems hay una constante entera ADJUSTEMENT_VALUE_CHANGED
que indica que ha ocurrido un cambio.

Para determinar el tipo de ajuste se realiza mediante el mtodo


int getAdjustmentType( )

Y la cantidad de ajuste se obtiene mediante int getValue( )

EVENTOS EN JAVA
ItemEvent
Hay dos tipos de eventos de elemento y se identifican por las
siguientes constantes enteras:

DESELECTED el usuario deselecciona un elemento


SELECTED el usuario selecciona un elemento.
Adems define una constante para indicar que ocurri un cambio y
es ITEM_STATE_CHANGED
Tambien define tres mtodos unos es Object getItem( ) que
devuelve la referencia al objeto que ha generado el evento
ItemSelectable getItemSelectable( ) que se usa para obtener una
referencia a los objetos ItemSelectable que han generado un
evento.
Int getStateChange( ) que devuelve el cambio de estado ocurrido
ya se SELECTED o DESELECTED.

EVENTOS EN JAVA
KeyEvent
Define tres constantes enteras y son KEY_PRESSED, KEY_RELEASED Y
KEY_TYPED las dos primeras se generan cuando se presiona o se libera
una tecla y el ultimo se genera cuando se genera un carcter.
Hay eventos que se generan que no siempre producen caracteres y es
cuando se presionan teclas como el SHIFT y las constantes definidas son:
VK_ENTER,VK_ESCAPE,VK_CANCEL,VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT,
VK_PAGE_DOWN,VK_PAGE_UP,VK_SHIFT,VK_ALT,VK_CONTROL
VK especifica cdigo de teclas virtuales y son independientes de SHIFT y
ALT
En caso que no este definido el carcter generara un CHAR_UNDEFINED O
VK_UNDEFINED
Los mtodos que mas se usan son char getKeyChar( ) y int
getKeyCode( )respectivamente devuelve el carcter presionado y el tipo
detecla presionada.

EVENTOS EN JAVA
MouseEvent
Define las siguientes constantes para identificar los tipos de eventos y son:

MOUSE_CLICKED el usuario hace click con el ratn


MOUSE_DRAGGED el usuario arrastra el ratn
MOUSE_ENTERED el ratn mete un componente
MOUSE_EXITED el ratn sale de un componente
MOUSE_MOVED se mueve el ratn
MOUSE_PRESSED se presiona el ratn
MOUSE_RELEASED se libera el raton
Los mtodos mas usados son: int getX( ), int getY( ) que devuelven las
coordenadas x,y del ratn y o Point getPoint( ) que tambien las devuelve
pero mediante un objeto de tipo Point
El mtodo int getClickCount( ) que indica el nmero de clicks que se han
hecho con el ratn

EVENTOS EN JAVA
WindowEvent define las siguientes constantes:

WINDOW_ACTIVATED se ha activado la ventana


WINDOW_CLOSED se ha cerrado la ventana
WINDOW_CLOSING se ha pedido que se cierre la ventana
WINDOW_DEACTIVATED la ventana a dejado de estar activa
WINDOW_DEICONIFIED se ha mostrado la ventada tras pulsar su
icono

WINDOW_ICONIFIED se ha minimizado la ventana


WINDOW_OPENED se ha abierto la ventana
La funcin que se utiliza es Window getWindow( ) que devuelve el
objeto que ha generado el evento.

Ejemplos de componentes que pueden generar eventos

Origen de evento

EVENTOS EN JAVA
Descripcin

Button

Genera eventos de accin (ActionEvent) cuando se presiona el botn.

Checkbox

Genera eventos de elementos (ItemEvent) cuando se selecciona o


deselecciona un checkbox.
Genera eventos de elementos cuando se cambia de opcin choice.

Choice
List
Menu Item

Genera eventos de accin cuando se hace doble click sobre un elemento,


genera eventos de elemento cuando se selecciona o deselecciona un
elemento.
Gener eventos de accin cuando se selecciona un elemento de men;
genera eventos de lemento cuando se selecciona o se deselecciona un
elemento de un men de opciones.

EVENTOS EN JAVA
Scrollbar
Text components
Window

Genera eventos de ajuste (AdjustmentEvent) cuando se manipula el


scrollbar.
Genera eventos de texto (TextEvent) cuando el usuario introduce un
carcter.
Genera eventos de ventana (WindowEvent) cuando una ventana se activa,
se cierra, se desactiva, se minimiza, se maximiza, se abre o se sale de ella.

EVENTOS EN JAVA
Se pueden definir clases Receptorextendiendoclases adaptadores, en vez
deimplementarel interfaz receptor correspondiente. Esto proporciona
libertad al programador para redefinir solamente aquellos mtodos del
interfaz que intervienen en la aplicacin que desarrolla.
Interfaces de auditor que ms se utilizan
ActionListener
La interfaz tiene que definir el mtodo:
void actionPerformed(ActionEvent e)el cual se invoca cuando ocurre un
evento de accin.

AdjustmentListener
La interfaz tiene que definir el mtodo:
void adjustmentValueChanged(AdjustmetEvent ae) el cual se invoca cuando
ocurre un evento de ajuste.

EVENTOS EN JAVA
ComponentListener
La interfaz tiene que definir los siguientes mtodos:
void componentResized(ComponentEvent ce)
void componentMoved(ComponentEvent ce)
void componentShown(ComponentEvent ce)
void componentHiden(ComponentEvent ce)
Se invocan cuando a un componente se le cambia de tamao, se mueve, se
muestra o se oculta.

ContainerListener
La interfaz tiene que definir los siguientes mtodos:
void componentAdded(ContainerEvet ce)
void componentRemoved(ContainerEvet ce)
Se invocan cuando se aade un componente a un contenedor y cuando se borra
un componente de un contenedor.

EVENTOS EN JAVA
FocusListener
La interfaz tiene que definir los siguientes mtodos:
void focusGained(FocusEvent fe)
void focusLost(FocusEvent fe)
Se invocan cuando se gana el foco o se pierde el foco

ItemListener
La interfaz tiene que definir el siguiente mtodo:
void itemStateChanged(ItemEvent ie)
Se invoca cuando cambia el estado de un elemento

EVENTOS EN JAVA
KeyListener
La interfaz tiene que definir los siguientes mtodos:
void keyPressed(KeyEvent ke)
void keyReleased(KeyEvent ke)
void keyTyped(KeyEvent ke)
Se invocan cuando se presiona, libera una tecla y cuando se introduce un carcter.

MouseListener
La interfaz tiene que definir los siguientes mtodos:
void mouseClicked(MouseEvent me)
void mouseEntered(MouseEvent me)
void mouseExited(MouseEvent me)
void mousePressed(MouseEvent me)
void mouseReleased(MouseEvent me)
Se invocan cuando se presiona, cuando entra a un componente, cuando sale, cuando se
presiona y se libera el ratn.

EVENTOS EN JAVA
MouseMotionListener
La interfaz tiene que definir los siguientes mtodos:
void mouseDragged(MouseEvent me)
void mouseMoved(MouseEvent me)
Se invocan cuando se arrastra y se mueve el ratn.

TextListener
La interfaz tiene que definir el siguiente mtodo:
void textChanged(TextEvent te)
Se invoca cuando ha ocurrido un cambio en un rea de texto o en
un campo de texto.

EVENTOS EN JAVA
WindowListener
La interfaz tiene que definir los siguientes mtodos:
void windowActivated(WindowEvent we) activa
void windowDeactivated(WindowEvent we) desactiva
void windowClosed(WindowEvent we) cierra
void windowClosing(WindowEvent we) peticin de cerrar
void windowDeiconfied(WindowEvent we)
void windowIconfied(WindowEvent we) minimiza
void windowOpened(WindowEvent we) abre
Se invocan cuando se activa, se desactiva, se cierra una
ventana, se esta cerrando una ventana, se minimiza a un icono,
cuando se abre a partir de un icono y cuando se abre una ventana.

EVENTOS EN JAVA
Clases adaptadoras que se usan cuando no se requieren
definir todos los eventos de un elemento y son:
Clase Adaptadora

Interfaz auditora

ComponentAdapter
ContainerAdapter
FocusAdapter
KeyAdapter
MouseAdapter
MouseMotionAdapter
WindowAdapter

ComponentListen
ContainerListen
FocusListener
KeyListener
MouseListener
MouseMotionListener
WindowListener

EVENTOS EN JAVA
Capturar eventos
Cuando el usuario interacta con la interfaz grfica lo hace a travs
de sus componentes.
Cada accin que realiza (esto es: cada botn que presiona, cada
tem que selecciona sobre una lista, cada carcter que escribe
sobre un campo de texto, etc.) genera un evento y nosotros, como
programadores, lo podemos escuchar para notificarnos y as
poder hacer en ese momento lo que sea necesario.
Es decir, los componentes generan eventos y nosotros podemos
escucharlos (o notificarnos) utilizando listeners (escuchadores).
Un listener no es ms que un objeto cuya clase implementa una
determinada interface, que est relacionado a un componente para
que este lo notifique ante la ocurrencia de un determinado tipo de
evento.

Вам также может понравиться