Manejo de Eventos en Java
Manejo de Eventos en Java
Manejo de Eventos en Java
Cuando tenemos una aplicacin que contiene el mtodo main, es dicho mtodo
quin decide el orden de ejecucin de las operaciones.
Se entiende como evento a la operacin que tiene como resultado una accin tras
la intervencin del usuario. Tambin se define como la encapsulacin de una
informacin que puede ser enviada de manera asncrona a la aplicacin y pueden
corresponder a a acciones fsicas (Mouse o teclado) y acciones lgicas.
En java, los eventos forman parte del paquete java.awt.event y estn organizados
en una jerarqua de clases dentro de dicho paquete:
Este esquema permite visualizar un ejemplo del modelo de evento que maneja 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.
Manejo de Eventos
Prof. Viviana Avarez Tom
Clases de Eventos
Las clases que representan eventos son el ncleo del mecanismo de gestin de
eventos de java. Estas clases proporcionan una forma fcil y potente de encapsular
eventos y todas heredan de EvenObject, que se encuentra en java.util.
Para interpretar esta tabla, por ejemplo un objeto de tipo Button (botn) puede
generar eventos de tipo ActionEvent, ComponentEvent, FocusEvent, KeyEvent,
MouseEvent y MouseMotionEvent, pero nunca generar un evento de tipo ItemEvent.
void actionPerformed(ActionEvent e)
AdjustementListener Evento de ajuste, mtodo:
void adjustmentValueChanged(AdjustmentEvent e)
ComponentListener Evento de cambio de un componente, mtodos:
void componentResized(ComponentEvet e)
void componentMoved(ComponentEvet e)
void componentShown(ComponentEvet e)
void componentHidden(ComponentEvet e)
ContainerListener Evento de contenedor, mtodos:
void componentAdded(ContainerEvent e)
void componentRemoved(ContainerEvent e)
FocusListener Evento de foco del teclado, mtodos:
void focusGained(FocusEvent e)
void focusLost(FocusEvent e)
ItemListener Evento de cambio de tem, mtodo:
void itemStateChanged(ItemEvent e)
KeyListener Evento de teclado, mtodos:
void keyPressed(KeyEvent e)
void keyRelease(KeyEvent e)
void keyTyped(KeyEvent e)
MouseListener Evento de accin de Mouse, mtodos:
void mouseCliked(MouseEvent e)
void mouseEntered(MouseEvent e)
void mouseExited(MouseEvent e)
void mousePressed(MouseEvent e)
void mouseReleased(MouseEvent e)
MouseMotionListener Evento de arrastre de Mouse, mtodos:
void mouseDragged(MouseEvent e)
void mouseMoved(MouseEvent e)
MouseWheelListener Evento de la rueda del Mouse, mtodo:
void mouseWheelMoved(MouseWheelEvent e)
TextListener Evento de cambio de texto, mtodo:
void textChanged(TextEvent e)
WindowFocusListener Evento de foco de ventana, mtodos:
void windowGainedFocus(WindowEvent e)
void windowLostFocus(WindowEvent e)
WindowListener Evento de manipulacin de ventana, mtodos:
void windowActivated(WindowEvent e)
Manejo de Eventos
Prof. Viviana Avarez Tom
void windowClosed(WindowEvent e)
void windowClosing(WindowEvent e)
void windowDeactivated(WindowEvent e)
void windowDeiconified(WindowEvent e)
void windowIconified(WindowEvent e)
void windowOpened(WindowEvent e)
En este punto ya se conoce los eventos, los oyentes y las interfaces que contienen
los mtodos de manejo de eventos y que deben ser sobrescritos por la aplicacin. A
continuacin veremos un ejemplo de creacin de una ventana y un botn, y se
programar el cierre de la ventana y el evento de cierre del botn.
El cdigo sera:
Manejo de Eventos
Prof. Viviana Avarez Tom
boton1.addActionListener(this);
frame.addWindowListener(this);
Clase Adaptadora
Una clase adaptadora proporciona una implementacin vaca de todos los mtodos
de una interfaz. Estas clases son tiles cuando se quieren recibir y procesar solo
algunos eventos que gestiona la interfaz oyente de eventos, por lo que se puede
heredar de esa clase adaptadora y sobrescribir el o los mtodos necesarios para la
implementacin.
Cada interfaz oyente que tenga ms de un mtodo definido tiene una clase
adaptadora.
Clases Internas
Las clases internas son clases de java que se definen dentro de un bloque de
cdigo, puede ser dentro de una clase, dentro de un mtodo o dentro de un ciclo.
La utilidad de una clase interna se resalta al utilizarla annima. Una clase annima
es aquellas que no tiene nombre alguno, y que permite facilitar la escritura ya que
cada vez que necesitemos implementar un mtodo de oyente se puede dar el
cdigo adecuada a cada caso.
Por ejemplo, veamos el cdigo anterior al que se le implementa una clase annima
que sobrescriba el mtodo windowClosing().
1. Por Colaboracin
2. Por Herencia
En esta tcnica se crea una nueva clase donde el contenedor sea una variable de la
clase, por ejemplo: