Tópicos Avanzados de Programación - Eventos
Tópicos Avanzados de Programación - Eventos
Tópicos Avanzados de Programación - Eventos
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:
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)
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:
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
ComponentEvent
ContainerEvent
EVENTOS EN JAVA
FocusEvent
InputEvent
ItemEvent
KeyEvent
MouseEvent
TextEvent
WindowEvent
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.
EVENTOS EN JAVA
ItemEvent
Hay dos tipos de eventos de elemento y se identifican por las
siguientes constantes enteras:
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:
EVENTOS EN JAVA
WindowEvent define las siguientes constantes:
Origen de evento
EVENTOS EN JAVA
Descripcin
Button
Checkbox
Choice
List
Menu Item
EVENTOS EN JAVA
Scrollbar
Text components
Window
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.