Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Programación Avanzada
Gestión de Eventos en Java
Estructura general
ObserverIF: interface
que define el
comportamiento de un
observador.
Observer: clase que
define a los objetos
observadores concretos
y que actúa en función
de las notificaciones
recibidas.
ObservableIF: interface que define el comportamiento de un objeto
observado.
Observable: clase que define a los objetos concretos que enviarán
las notificaciones al cambiar su estado.
Multicaster: clase mediadora (opcional) que transfiere las
notifcaciones de los objetos concretos.
Esp. Ing. César Omar Aranda 3
Interacción
Argumento pasado al
Argumento que referencia
método notifyObservers,
al objeto que ha enviado la
puede indicar el tipo de
notificación
cambio
Ejemplo Simple
Eventos
Sucesos asíncronos
Como clic en un botón, pulsado de tecla, desplazamiento sobre
un componente, etc.
No sabemos cuándo se producen
Objetos de Evento
Event
Son generados por la JVM
Mecanismo de entidades (objetos) de escucha (oyentes)
Listeners : Son las clases (interfaces) provistas por Java
Principio: Un objeto le dice (registrar) a otro objeto, con
capacidad de detección, que cuando pase algo, le avise.
Múltiples Listeners
Component
EventListener
Ocurre evento Event
addEventListener
EventListener
Interfaces Listener
Existen diferentes interfaces listener, cada una
apropiada para un diferente tipo de evento GUI:
ActionListener,
ItemListener,
KeyListener,
MouseListener,
WindowListener,
...
12
Secuencia de señales
Mecanismo de propagación
Objetos participantes
Uso de Listener
Pueden definirse nuevos oyentes.
Para crear un listener la aplicación debe declarar una clase que
implementa alguna interfaz listener (listener interface)
Pueden usarse definiciones basadas en clases internas (inner
class)
Ejemplo de ActionListener
Ensamblado:
1. JButton btnCancelar = new JButton(“Cancelar”);
2. btnCancelar.addActionListener( new CancelarListener() );
3. …
Definición:
1. class CancelarListener implements ActionListener {
2. void actionPerformed(ActionEvent e) {
3. dialogo.setVisible(false);
4. }
5. }
Objetos de Escucha
Cada componente permite agregar un ActionListener que
está relacionado con el tipo del componente
Por ejemplo, si a un botón se le agrega un ActionListener el
mismo es invocado cuando se oprime el botón ya sea con el
mouse o con el teclado.
No es necesario definir KeyEvents o MouseEvents para esto.
Los ActionListener se usan principalmente con botones y
menús. Aunque pueden usarse con otros tipos de
componentes.
En un TextField el ActionListener es invocado cuando el cursor
sale del TextField.
En las listas y tablas se utilizan listeners especiales
denominados SelectionListener
Esp. Ing. César Omar Aranda 19
8. void keyPressed(KeyEvent e) { … }
9. void keyReleased(KeyEvent e) { … }
10. }
Esp. Ing. César Omar Aranda 21
Adaptadores
Las clases Adapter implementan la interfaz correspondiente y
definen métodos vacíos
Utilidad: no hay que implementar los métodos que no interesan, en
especial en aquellos casos en que la interfaz listener incluye más
de un método.
1. class EdadKeyListener extends KeyAdapter {
2. void keyTyped(KeyEvent e) {
3. char c = e.getKeyChar();
4. if (!Character.isDigit(c) {
5. // error, solo se permiten números
6. }}}
Ensamblado
1. TextField edad = new TextField(3);
2. edad.addKeyListener( new EdadKeyListener() );
Esp. Ing. César Omar Aranda 22
Estructura general
Cliente: clase que
representa al objeto
que desea acceder
al comportamiento
según se presenta
en Objetivo.
Objetivo: clase con
el tipo de interfaz
pública que se desea
usar.
Adaptado: clase que contiene la definición del método concreto que
se desea usar y cuya interfaz pública no coincide con la usada por el
objeto Cliente
Adaptador: clase que representa al objeto concreto al que accede el
cliente y que define el tipo y forma de la adaptación del método
existente en la clase Adaptado.
Esp. Ing. César Omar Aranda 25
Ejemplo Simple
27
Bibliografía
Fundamental
DEITEL, F. y DEITEL, H. (2008). Cómo programar en Java. 7ma edición,
Capítulo 11. Pearson Education.
FROUFE QUINTAS, A. (2003). Java 2: Manual de usuario y tutorial. 3ra edición.
México: Alfaomega.
ECKEL B. (2007). Piensa en Java. 4ª Edición. Capítulo 22. España: Prentice Hall.
Pearson Educación.
GAMMA, E; HELM, R. y otros (2003). Patrones de Diseño. España: Addison-
Wesley. Pearson Education.
Referencias complementarias
http://pervasive2.morselli.unimo.it/~nicola/courses/IngegneriaDelSoftware/index.h
tml
http://www.javaya.com.ar/index.php?inicio=20 (itemes 33 a 39)
http://atobeto-eremita.blogspot.com.ar/2009/08/diseno-de-interfaces-graficas-en-
java.html
http://www.publijuegos.com/