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