Download Manejo básico de eventos en Java - dccia

Document related concepts
no text concepts found
Transcript
Razonamiento Geométrico
Librerias Java para diseñar GUI
! AWT
Manejo básico de eventos en Java
(AWT y Swing)
" Primera librería gráfica
" Se usan llamadas a los sistemas de ventanas nativos (componentes
“pesados”)
" Intento de un API común mediante el “mínimo común
denominador” de todos los sistemas de ventanas
" Problemas: componentes escasos, aplicaciones dependientes del
entorno de ventanas
! Swing
" Evolución tras AWT
" Se usa código propio de Java que dibuja en una ventana
proporcionada por el sistema de ventanas (componentes “ligeros”).
" Mayor cantidad de componentes y uniformidad de las aplicaciones
gráficas en todos los entornos de ventanas
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
1
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
Pasos para definir una GUI con Swing
Ejemplo 1
1. Crear los componentes
2. Definir las propiedades de los componentes
3. Crear los contenedores que almacenan los
componentes
4. Especificar los LayoutManagers para disponer los
componentes en los contenedores
5. Añadir los componentes en los contenedores
6. Definir la escucha de eventos
7. Mostrar la GUI al usuario
! Probar la aplicación DisplayMessage
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
3
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
2
4
Oyentes de eventos
Notificación de eventos
! Los eventos los generan los componentes y los
procesan objetos que implementan la interfaz
EventListener
! Pasos:
" 1. Crear los componentes
" 2. Crear los oyentes de los eventos que queremos tratar
" 3. Asociar los oyentes a los componentes
" 4. Cuando un evento se genera en un componente, la
aplicación llama al método correspondiente del oyente
asociado a ese componente
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
5
Objetos de la clase Event
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
6
Jerarquía de eventos
! Cuando se llama a una función que procesa un
evento, definida en una clase que implementa el
interfaz EventListener, se pasa como parámetro
información sobre el evento producido
public void actionPerformed(ActionEvent event) {
// código para tratar el evento
}
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
7
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
8
Tipos de oyentes
Oyentes AWT y componentes
! Para cada evento con nombre xxxEvent, se define
una interfaz llamada xxxListener en la que se
definen los métodos que van a manejarse
relacionados con ese evento
ActionEvent -> ActionListener
MouseEvent -> MouseListener
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
9
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
¿Dónde implementar la interfaz?
1. Clase que define el componente y la
interfaz
! Dado que los oyentes deben ser objetos de una clase
que implemente la interfaz, surge la cuestión de qué
clase debe implementar la interfaz
! Tres opciones:
class MiClase implements ActionListener{!!!
public MiClase()!!! {
!!!!!!!!!! ...!!!!!!!
Button btn = new Button("Boton");
btn.addActionListener(this);
!!!!!!!!!!!!!!!!! ...!!!
}!!!!!!
" Crear una clase que defina el componente e implemente
el oyente
" Crear una clase aparte
" Crear una clase interna
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
11
10
public void actionPerformed(ActionEvent e)!!! {!!
!!!!! // Aqui va el codigo de la accion!!!
}
}
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
12
2. Clase aparte
3. Clase interna
class MiClase{
!!!! public MiClase()
!!!! {
!!!!!!! ...
!!!!!!! Button btn = new Button("Boton");
!!!!!!! btn.addActionListener(new MiOyente());
!!!!!!! ...
!!!! }
}
class MiOyente implements ActionListener{
!!!! public void actionPerformed(ActionEvent e)
!!!! {
!!!!!!!! // Aqui va el codigo de la accion
!!!! }
Button btn = new Button("Boton");
btn.addActionListener(
new ActionListener() {
!public void actionPerformed(ActionEven e)!
{
// Aqui va el codigo de la accion
}
});
}
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
13
Librerías Geométricas
Copyright © 2008-2009 Universidad de Alicante
14