SlideShare una empresa de Scribd logo
1 de 21
7. Gestión de eventos con AWT/Swing
             Qué es Gestión de Eventos
             El hilo Swing
             Modelo de Eventos Java
             Jerarquía de Eventos
             Clases anónimas y Adapters
             Ejemplos



Programación III                 Tema 6 - Ventanas
Modelos de Gestión de
                   Eventos
   • Programación Tradicional:
           – No existen modelos de gestión de eventos.
           – Programa: Mediante un bucle (polling)
           – Ejemplo: Si se pulsa ENTER, sólo se detecta si se hace un getChar()
   • Programación en Java (y en otros lenguajes actuales)
           – Programación multihilo implícita (2 threads)
                   • Un flujo de control para el programa, otro para las ventanas
           – Modelos de eventos definidos
           – El programa es "avisado" automáticamente de todas aquellas
             acciones (eventos) en los que esté interesado.
                   • Para ello debe definirse previamente qué acciones “interesa escuchar”
                   • El flujo de control que ejecuta el evento es el de las ventanas
           – Ejemplo: Si el usuario pulsa un botón, el entorno es capaz de avisar
             al programa haciendo una llamada a un método. Para ello, el botón
             (el origen del evento) debe conocer al programa (el escuchador del
             evento).

Programación III                                Tema 6 - Ventanas
¿Qué hace (el hilo) Swing?

   • En cuanto se crea y visualiza la primera
     ventana, Swing se encarga de:
           – "Pintar" las ventanas
                   • Las redibuja si se redimensionan, cambian, se pone
                     una por delante...
           – Gestionar el ratón y el teclado con relación a las
             ventanas
           – Generar los eventos necesarios
                   • Pulsaciones de botones
                   • Paso de ratón por los componentes
                   • Cambios en ventanas
                   • etc.
Programación III                        Tema 6 - Ventanas
Modelo de Eventos Java (1)
   • Distingue dos elementos:
           – Fuentes de Eventos: elementos sobre los que se producen los eventos
             (botón, lista, panel...)
                   • Cualquier componente de AWT (o SWING) sobre el que se puedan producir
                     eventos (prácticamente todos)
           – Escuchadores de Eventos: elementos que reciben las notificaciones de los
             eventos
                   • Cualquier objeto (perteneciente a una clase) que implemente alguno de los
                     interfaces definidos en Java para la notificación de los eventos.
   • Funcionamiento:
           – Una “Fuente de Eventos” puede tener asignado un “Escuchador de Eventos”
             (o varios) que recibirá las notificaciones de sus eventos.
           – Cuando se produce un evento sobre la fuente de eventos, su escuchador es
             informado.
           – Para ello, se invoca el método que el escuchador tenga definido para la
             notificación de ese tipo de evento.
           – El escuchador, dentro de ese método, contendrá el código necesario para
             tratar ese evento.
   • ¿Cómo se asigna un escuchador a una fuente de eventos?
                   <FuenteEvento>.add<EventoListener>( <Obj.Escuchador> )


Programación III                                   Tema 6 - Ventanas
Modelo de Eventos Java (2): Ej.




Programación III                  Tema 6 - Ventanas
Modelo de Eventos Java (3):
                                 Interfaces
   • Interfaces para la notificación de eventos
           – Interfaces que contienen métodos (que reciben un objeto evento) que
             serán invocados cuando se produzca un determinado tipo de evento.
           – Cada interfaz está especializado en capturar un tipo de eventos
             determinado.
           – Lista de algunas Interfaces y sus métodos:
        Interfaz              Métodos
        ActionListener        actionPerformed(ActionEvent)

        FocusListener         focusGained, focusLost(FocusEvent)

        TextListener          textValueChanged(TextEvent)

        KeyListener           keyPressed, keyReleased, keyTyped(KeyEvent)

        MouseListener         mouseClicked, mousePressed, mouseReleased, mouseEntered,
                              mouseExited(MouseEvent)
        MouseMotionListener   mouseDragged, mouseMoved(MouseEvent)

        WindowListener        windowActivated, windowClosed, windowClosing, windowDeactivated,
                              windowDeiconified, windowIconified, windowOpened(WindowEvent)

Programación III                                 Tema 6 - Ventanas
Jerarquía de Eventos (1)
           – Los métodos de las interfaces, además de ser llamados, reciben un
             objeto evento que contiene la información que pueda ser relevante.
           – Los objetos de tipo “Evento” están organizados en una jerarquía de
             clases de eventos:




Programación III                       Tema 6 - Ventanas
Jerarquía de Eventos (2)
           – Padre de todos los eventos: EventObject
           – Padre de eventos gráficos: AWTEvent
           – Cada objeto posee información sobre el evento concreto que se ha
             producido.
   • Obtención de la información de un evento:
           – Cada tipo de evento posee métodos para consultar la información
             del evento ocurrido. Ejemplos:
                   • Clase EventObject
                       – getSource(): devuelve el objeto (fuente) sobre el que se ha producido el
                         evento
                   • Clase ActionEvent
                       – getModifiers(): información variada sobre el evento (por ejemplo, comb. de
                         teclas pulsadas –shift, alt-)
                   • Clase MouseEvent
                       – getModifiers(): información variada sobre el evento (p ej. el botón pulsado)
                       – getX() y getY(): coordenada pulsación de ratón
                       – getClickCount(): número de clicks seguidos efectuados


Programación III                                  Tema 6 - Ventanas
Jerarquía de Eventos (3)
            – Cada fuente de eventos, generará distintos tipos posibles
              de eventos:
     Componente    Evento        Hecho que lo genera

     Button        ActionEvent   El usuario hace un clic sobre el botón
     Checkbox      ItemEvent     El usuario selecciona o deselecciona el Checkbox
     List          ActionEvent   El usuario hace doble click sobre un elemento de la lista
                   ItemEvent     El usuario selecciona o deselecciona un elemento de la lista
     Component     MouseEvent    El usuario pulsa o suelta un botón del ratón, el cursor del
                                 ratón entra o sale o el usuario mueve o arrastra el ratón
                   FocusEvent    El componente gana o pierde el foco
                   KeyEvent      El usuario pulsa o suelta una tecla
     TextField     ActionEvent   El usuario termina de editar el texto (hace un intro)
     Window        WindowEvent   La ventana se abre, se cierra, se minimiza, se reestablece o
                                 se cierra.



Programación III                         Tema 6 - Ventanas
Ej. (1): Ventana y escuchador
   • Ventana con un botón y una etiqueta. Cuando se
     pulse el botón queremos que en la etiqueta se
     visualice la fecha y hora actual.
   • Pasos:
           – Crear la ventana y todos sus componentes.
           – Crear un objeto escuchador que sea capaz de atender a
             los eventos generados al pulsar un botón.
                   • Evento generado: ActionEvent
                   • Interfaz que posee los métodos para atender ese evento:
                     ActionListener
           – Asignar ese escuchador al botón.
           – Incorporar el código a ejecutar cuando se pulse el botón.
        Ejemplo: VentanaBoton

Programación III                            Tema 6 - Ventanas
Ejemplos (1b): Hilos

   • Aprovechando este ejemplo, veamos cómo
     funcionan esos dos hilos
           – A la vez que el main() sigue haciendo cosas
           – Un evento las puede hacer también
   • Escribir a un TextArea
           – Cálculo
           – Botón




Programación III                Tema 6 - Ventanas
Ej (2): Escuchador =
                          Ventana
   • ¿Quién debe ser el escuchador? Hay multitud de
     enfoques.
           – Puede ser una clase que ya hayamos creado (recordar que
             se pueden implementar tantas interfaces como se quiera).
             Por ejemplo la propia ventana.
                     public class VentanaBotonEscuchador
                     extends JFrame
                     implements ActionListener
           – Puede ser otra clase completamente nueva que sólo se
             encargue de ser escuchadora. El principal problema está
             en acceder a la información/recursos que se puedan
             necesitar para tratar el evento correctamente.
           – Clase anónimas. Clases que ya proporciona Java que
             permiten una gestión simple y limpia de los eventos. Un
             enfoque sencillo aunque sorprendente a primera vista.
        Ejemplo: VentanaBotonEscuchador

Programación III                    Tema 6 - Ventanas
Ej (3): Escuchador de varios eventos

           – Ejemplo: ventana con tres botones y una etiqueta.
           – Si tres botones un mismo escuchador ¿cómo saber en el
             actionPerformed( ) el botón pulsado?
           – Solución: alternativa sobre el evento
                     public void actionPerformed(ActionEvent e)
                     {
                       JButton botonPulsado = (JButton)e.getSource();
                       if (botonPulsado == boton1)
                         etiqueta.setText("Se ha pulsado el botón 1");
                       if (botonPulsado == boton2)
                         etiqueta.setText("Se ha pulsado el botón 2");
                       if (botonPulsado == boton3)
                         etiqueta.setText("Se ha pulsado el botón 3");
                     }



    Ejemplo: VentanaBotones
Programación III                       Tema 6 - Ventanas
Ej (4): Varios eventos desde dist tipo
           – Tenemos una ventana con tres botones, una caja de
             texto y una etiqueta.
           – En este caso, ¿cómo averiguamos si el elemento sobre el
             que se produce el evento es un botón o la caja de texto?
           – Del mismo modo
                     ...
                     boton3.addActionListener(this);
                     texto.addActionListener(this);
                     ...
                   public void actionPerformed(ActionEvent e)
                   {
                     Object elemento = e.getSource();
                     ...
                     if (elemento == texto)
                         etiqueta.setText(“Texto rellenado: " +
                                                texto.getText());
                   ...                          Ejemplo: VentanaBotonesTexto
Programación III                      Tema 6 - Ventanas
Ej (5): Conocer el tipo de
                                  comp.
   • Si en algún momento necesitásemos conocer el tipo al que pertenece
     alguno de los objetos, podríamos hacer
                     Object elemento = e.getSource();
                     if (elemento instanceof JButton)
                     {
                           System.out.println("El elemento es un botón");
                           JButton boton = (JButton)elemento;
                     }
                     if (elemento instanceof JTextField)
                     {
                           System.out.println("El elemento es de texto");
                           JTextField cajaTexto = (JTextField)elemento;
                     }
   • ¿Qué ventaja ofrece esta última opción?
   • Ejemplo Completo
                   • Botones (lo ya visto)
                   • Ratón sobre un panel. Evento: MouseEvent - Interfaz: MouseListener
                   • Eventos de ventana (cerrar, minimizar, maximizar...)
                       – Evento: WindowEvent - Interfaz: WindowListener
                       – Acción a realizar: cerrar la ventana y terminar el programa.

                                                                          Ejemplo: VentanaEventos
Programación III                                      Tema 6 - Ventanas
Adapters (1/2)

   • Cuando un listener tiene muchos eventos, como
     por ejemplo el MouseListener, hay que redefinir
     todos los métodos, aunque sólo se necesite uno de
     ellos.
   • Para evitar esto, el API ofrece una clase Adapter
     para cada listener, en donde ya están redefinidos
     los métodos del interfaz listener correspondiente.
   • Podemos utilizar una clase que herede de un
     Adapter para el tratamiento de los eventos de una
     forma más cómoda.
   • Esta clase debe ser interna al JFrame, para
     poder acceder a sus elementos.

                         Ejemplo: VentanaEventosConAdapter

Programación III           Tema 6 - Ventanas
Adapters (2/2)

   • Esta clase interna, también se puede definir
     de forma anónima:
                   this.addWindowListener( new WindowAdapter() {
                         public void windowClosing(WindowEvent e) {
                               System.exit(0);
                         }
                   });


                   • Muchos entornos de desarrollo, que generan código
                     de manera automática para la gestión de eventos, lo
                     hacen utilizando una clase interna y anónima.
                          Ejemplo: VentanaEventosConAdapterAnonimo

Programación III                         Tema 6 - Ventanas
Nota: patrón Observer

   • El concepto de escuchador responde a un
     patrón de diseño más general: Observer
           – Un objeto, llamado sujeto, mantiene una lista
             de sus objetos observadores
           – Cada vez que hay un determinado cambio de
             estado en el sujeto, este notifica a sus
             observadores
                   • Llamando a un método particular
                   • Pasando información con sus parámetros
           – Suele concretarse en cumplir un interfaz
                   • Se puede hacer con punteros a función en otros
                     lengs.
Programación III                       Tema 6 - Ventanas
Ejemplos de Observer
           – Objeto/operación que progresa
                   • IProgresa{ void progresa( double p ); }
           – Objeto/operación que acaba
                   • IAcaba{ void acabo(); }
           – Objeto/estructura que se puede recorrer
                   • IProcesaRecorrido{ void procesa( Object o ); }
           – Objeto que muta/cambia
                   • IMutacionListener{ void haMutado( ... ); }
   • Posible ejemplo: carpeta de disco
           – Recorrido de ficheros - progresa + opera + acaba
           – Observador de carpeta que cambia (sus fichs.)
Programación III                         Tema 6 - Ventanas
Ejemplo Observer (cont)
           public class ProcesoFicheros
             public ProcesoFicheros( String path ) ...
             public void recorre( IProcesaRecorrido rec,
                 IProgresa prog, IAcaba fin ) ...
             public void addCambioCarpetaListener(
                 ICambioCarpListener esc ) ...
           }
           – En el recorrido llamará a:
                   • rec.procesa( <cada fichero> )
                   • prog.progresa( <% de vez en cuando> )
                   • fin.acabo() // al final
           – Al añadir un escuchador de cambio llamará a:
                   • esc.haCambiado( <info de cambio> ) // cada cambio
Programación III                      Tema 6 - Ventanas
Concurso: ProcesoFicheros

   • Premio para el mejor: ¡1,5 puntos!
           – Posibles "accesits" para otros mejores
   • Fecha tope: 18 de noviembre
   • Condiciones
           – Interfaz visual ventana para seguir la búsqueda
                   • Lanzamiento de búsqueda - config. de path
                   • Barra de progreso
                   • Información de ficheros encontrados
                   • Lanzamiento de escucha / info. popup de cambios
           – Todo el código propio excepto uso de API Java6
           – Bien documentado javadoc
Programación III                       Tema 6 - Ventanas

Más contenido relacionado

La actualidad más candente (18)

Eventos del ratón en Java
Eventos del ratón en JavaEventos del ratón en Java
Eventos del ratón en Java
 
presentacion topicos unidad 1
presentacion topicos unidad 1presentacion topicos unidad 1
presentacion topicos unidad 1
 
Manejo de Eventos en java
Manejo de Eventos en javaManejo de Eventos en java
Manejo de Eventos en java
 
Manejo de eventos en java
Manejo de eventos en javaManejo de eventos en java
Manejo de eventos en java
 
inv unidad 1 topicos avanzados de programacion
inv unidad 1 topicos avanzados de programacioninv unidad 1 topicos avanzados de programacion
inv unidad 1 topicos avanzados de programacion
 
Manejo de eventos
Manejo de eventosManejo de eventos
Manejo de eventos
 
Manejo Eventos en java
Manejo Eventos en javaManejo Eventos en java
Manejo Eventos en java
 
Manejo Eventos
Manejo EventosManejo Eventos
Manejo Eventos
 
Equipo3
Equipo3Equipo3
Equipo3
 
Clase event
Clase eventClase event
Clase event
 
6.eventos y swing
6.eventos y swing6.eventos y swing
6.eventos y swing
 
6.eventos y swing
6.eventos y swing6.eventos y swing
6.eventos y swing
 
Eventos
EventosEventos
Eventos
 
Java event
Java eventJava event
Java event
 
Sesion12-Componentes AWT
Sesion12-Componentes AWTSesion12-Componentes AWT
Sesion12-Componentes AWT
 
03 interfaces gráficas awt
03   interfaces gráficas awt03   interfaces gráficas awt
03 interfaces gráficas awt
 
Irv
IrvIrv
Irv
 
Event Programing & Driven Mediator Pattern
Event Programing & Driven Mediator PatternEvent Programing & Driven Mediator Pattern
Event Programing & Driven Mediator Pattern
 

Destacado

Programacion Orientada a Eventos
Programacion Orientada a EventosProgramacion Orientada a Eventos
Programacion Orientada a EventosLaura
 
Empaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con NetbeansEmpaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con NetbeansLaura Folgado Galache
 
Programación visual y orientada a eventos
Programación  visual y orientada a eventosProgramación  visual y orientada a eventos
Programación visual y orientada a eventosMario Martinez Alvarez
 
Programacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a EventosProgramacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a EventosNICK
 
Programación Orientada a Eventos Java
Programación Orientada a Eventos JavaProgramación Orientada a Eventos Java
Programación Orientada a Eventos JavaJosé Mendoza
 
Programacion orientada a objetos y programacion orientada a eventos
Programacion orientada a objetos y programacion orientada a eventosProgramacion orientada a objetos y programacion orientada a eventos
Programacion orientada a objetos y programacion orientada a eventosJosue Ivan Turcios
 
Interfaces gráficas con ide netbeans guia 1
Interfaces gráficas con ide netbeans guia 1Interfaces gráficas con ide netbeans guia 1
Interfaces gráficas con ide netbeans guia 1Pablo Galeana Bailey
 
Interfaces gráficas con ide netbeans guia 3
Interfaces gráficas con ide netbeans guia 3Interfaces gráficas con ide netbeans guia 3
Interfaces gráficas con ide netbeans guia 3Pablo Galeana Bailey
 
Programación orientada a eventos - Alejandro Solano
Programación orientada a eventos - Alejandro SolanoProgramación orientada a eventos - Alejandro Solano
Programación orientada a eventos - Alejandro Solano2008PA2Info3
 
T4 Sql LMD
T4 Sql  LMDT4 Sql  LMD
T4 Sql LMDrmonago
 
Espacios De Nombres Y Desarrollo De LibreríAs
Espacios De Nombres Y Desarrollo De LibreríAsEspacios De Nombres Y Desarrollo De LibreríAs
Espacios De Nombres Y Desarrollo De LibreríAsMarvin Romero
 
Base de datos unidad 1
Base de datos   unidad 1Base de datos   unidad 1
Base de datos unidad 1islandin
 
Gui interfaz gráfica de usuario javax.swing y java.awt
Gui interfaz gráfica  de usuario javax.swing y java.awtGui interfaz gráfica  de usuario javax.swing y java.awt
Gui interfaz gráfica de usuario javax.swing y java.awtcarlosAhumada_12
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetoschutas666
 
Tecnologia Microsoft
Tecnologia  MicrosoftTecnologia  Microsoft
Tecnologia Microsoftbrobelo
 

Destacado (20)

Programacion Orientada a Eventos
Programacion Orientada a EventosProgramacion Orientada a Eventos
Programacion Orientada a Eventos
 
Empaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con NetbeansEmpaquetado de aplicaciones Java con Netbeans
Empaquetado de aplicaciones Java con Netbeans
 
Programación visual y orientada a eventos
Programación  visual y orientada a eventosProgramación  visual y orientada a eventos
Programación visual y orientada a eventos
 
Programacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a EventosProgramacion Orientada a Objetos y a Eventos
Programacion Orientada a Objetos y a Eventos
 
Programación Orientada a Eventos Java
Programación Orientada a Eventos JavaProgramación Orientada a Eventos Java
Programación Orientada a Eventos Java
 
Programacion orientada a objetos y programacion orientada a eventos
Programacion orientada a objetos y programacion orientada a eventosProgramacion orientada a objetos y programacion orientada a eventos
Programacion orientada a objetos y programacion orientada a eventos
 
Interfaces gráficas con ide netbeans guia 1
Interfaces gráficas con ide netbeans guia 1Interfaces gráficas con ide netbeans guia 1
Interfaces gráficas con ide netbeans guia 1
 
Interfaces gráficas con ide netbeans guia 3
Interfaces gráficas con ide netbeans guia 3Interfaces gráficas con ide netbeans guia 3
Interfaces gráficas con ide netbeans guia 3
 
Los MIDlets
Los MIDletsLos MIDlets
Los MIDlets
 
Programacion orienatada a objetos parte 1
Programacion orienatada a objetos parte 1Programacion orienatada a objetos parte 1
Programacion orienatada a objetos parte 1
 
Programación orientada a eventos - Alejandro Solano
Programación orientada a eventos - Alejandro SolanoProgramación orientada a eventos - Alejandro Solano
Programación orientada a eventos - Alejandro Solano
 
Cuadro
CuadroCuadro
Cuadro
 
T4 Sql LMD
T4 Sql  LMDT4 Sql  LMD
T4 Sql LMD
 
Espacios De Nombres Y Desarrollo De LibreríAs
Espacios De Nombres Y Desarrollo De LibreríAsEspacios De Nombres Y Desarrollo De LibreríAs
Espacios De Nombres Y Desarrollo De LibreríAs
 
Base de datos unidad 1
Base de datos   unidad 1Base de datos   unidad 1
Base de datos unidad 1
 
Gui interfaz gráfica de usuario javax.swing y java.awt
Gui interfaz gráfica  de usuario javax.swing y java.awtGui interfaz gráfica  de usuario javax.swing y java.awt
Gui interfaz gráfica de usuario javax.swing y java.awt
 
Espacios de nombres en XML
Espacios de nombres en XMLEspacios de nombres en XML
Espacios de nombres en XML
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Programacion orientada a objetos parte 2
Programacion orientada a objetos parte 2Programacion orientada a objetos parte 2
Programacion orientada a objetos parte 2
 
Tecnologia Microsoft
Tecnologia  MicrosoftTecnologia  Microsoft
Tecnologia Microsoft
 

Similar a Programación III (Java) - 07 Eventos

2TAP Tema 1-Eventos.pptx
2TAP Tema 1-Eventos.pptx2TAP Tema 1-Eventos.pptx
2TAP Tema 1-Eventos.pptxATM_SSI
 
Eventos tpa walter isc
Eventos tpa walter iscEventos tpa walter isc
Eventos tpa walter iscWalter H
 
Java construye las interfaces gráficas del usuario mediante awt
Java construye las interfaces gráficas del usuario mediante awtJava construye las interfaces gráficas del usuario mediante awt
Java construye las interfaces gráficas del usuario mediante awtjbersosa
 
ManejoDeEventosEnJava.PPT
ManejoDeEventosEnJava.PPTManejoDeEventosEnJava.PPT
ManejoDeEventosEnJava.PPTATM_SSI
 
Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02kmilithho
 
Poo2 u1 a3_roag_2
Poo2 u1 a3_roag_2Poo2 u1 a3_roag_2
Poo2 u1 a3_roag_2cccimsa
 
Manejo Eventos en java
Manejo Eventos en javaManejo Eventos en java
Manejo Eventos en javajent46
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3Milaly
 
TAP - Eventos
TAP - EventosTAP - Eventos
TAP - EventosJuan Isai
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetosbrandonhh10
 
Topicos Avanzados de Programacion
Topicos Avanzados de ProgramacionTopicos Avanzados de Programacion
Topicos Avanzados de ProgramacionKaraa Xiah Poot
 

Similar a Programación III (Java) - 07 Eventos (20)

2TAP Tema 1-Eventos.pptx
2TAP Tema 1-Eventos.pptx2TAP Tema 1-Eventos.pptx
2TAP Tema 1-Eventos.pptx
 
Swing2
Swing2Swing2
Swing2
 
Manejoevento
ManejoeventoManejoevento
Manejoevento
 
Eventos tpa walter isc
Eventos tpa walter iscEventos tpa walter isc
Eventos tpa walter isc
 
Java construye las interfaces gráficas del usuario mediante awt
Java construye las interfaces gráficas del usuario mediante awtJava construye las interfaces gráficas del usuario mediante awt
Java construye las interfaces gráficas del usuario mediante awt
 
Adrian eventos
Adrian eventosAdrian eventos
Adrian eventos
 
ManejoDeEventosEnJava.PPT
ManejoDeEventosEnJava.PPTManejoDeEventosEnJava.PPT
ManejoDeEventosEnJava.PPT
 
Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02
 
Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02
 
Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02Actionscript3.0 juan camilo 11 02
Actionscript3.0 juan camilo 11 02
 
Eventos
EventosEventos
Eventos
 
Poo2 u1 a3_roag_2
Poo2 u1 a3_roag_2Poo2 u1 a3_roag_2
Poo2 u1 a3_roag_2
 
Manejo Eventos en java
Manejo Eventos en javaManejo Eventos en java
Manejo Eventos en java
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 
Topicos Avanzados de Programacion Unidad 1 Eventos
Topicos Avanzados de Programacion Unidad 1 EventosTopicos Avanzados de Programacion Unidad 1 Eventos
Topicos Avanzados de Programacion Unidad 1 Eventos
 
Eventos
EventosEventos
Eventos
 
TAP - Eventos
TAP - EventosTAP - Eventos
TAP - Eventos
 
Programacion orientada a objetos
Programacion orientada a objetosProgramacion orientada a objetos
Programacion orientada a objetos
 
Fundamentos de visual basic 6.0
Fundamentos de visual basic 6.0Fundamentos de visual basic 6.0
Fundamentos de visual basic 6.0
 
Topicos Avanzados de Programacion
Topicos Avanzados de ProgramacionTopicos Avanzados de Programacion
Topicos Avanzados de Programacion
 

Más de Andoni Eguíluz Morán

Cebek oficina fija oficina movil 2 - 201611
Cebek   oficina fija oficina movil 2 - 201611Cebek   oficina fija oficina movil 2 - 201611
Cebek oficina fija oficina movil 2 - 201611Andoni Eguíluz Morán
 
Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Andoni Eguíluz Morán
 
El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...Andoni Eguíluz Morán
 
Falta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosFalta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosAndoni Eguíluz Morán
 
Cebek oficina fija oficina movil 2 - 201512
Cebek   oficina fija oficina movil 2 - 201512Cebek   oficina fija oficina movil 2 - 201512
Cebek oficina fija oficina movil 2 - 201512Andoni Eguíluz Morán
 
Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Andoni Eguíluz Morán
 
Uso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoUso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoAndoni Eguíluz Morán
 
CCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesCCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesAndoni Eguíluz Morán
 
Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Andoni Eguíluz Morán
 
CYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesCYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesAndoni Eguíluz Morán
 
Cebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaCebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaAndoni Eguíluz Morán
 
Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Andoni Eguíluz Morán
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasAndoni Eguíluz Morán
 
Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7Andoni Eguíluz Morán
 

Más de Andoni Eguíluz Morán (20)

Cebek oficina fija oficina movil 2 - 201611
Cebek   oficina fija oficina movil 2 - 201611Cebek   oficina fija oficina movil 2 - 201611
Cebek oficina fija oficina movil 2 - 201611
 
Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610Cebek - oficina fija oficina movil 1 - 201610
Cebek - oficina fija oficina movil 1 - 201610
 
El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...El papel de las tic en la construccióLa integración de recursos didácticos di...
El papel de las tic en la construccióLa integración de recursos didácticos di...
 
Falta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamosFalta de profesionales tecnológicos.Cómo lo abordamos
Falta de profesionales tecnológicos.Cómo lo abordamos
 
Cebek oficina fija oficina movil 2 - 201512
Cebek   oficina fija oficina movil 2 - 201512Cebek   oficina fija oficina movil 2 - 201512
Cebek oficina fija oficina movil 2 - 201512
 
Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512Cebek - Oficina fija oficina movil 1 - 201512
Cebek - Oficina fija oficina movil 1 - 201512
 
Uso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativoUso seguro de las TIC en el mundo educativo
Uso seguro de las TIC en el mundo educativo
 
Uso ético y seguro de las TIC
Uso ético y seguro de las TICUso ético y seguro de las TIC
Uso ético y seguro de las TIC
 
Redes Sociales Educativas
Redes Sociales EducativasRedes Sociales Educativas
Redes Sociales Educativas
 
CCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitalesCCD2015 - Creación contenidos digitales
CCD2015 - Creación contenidos digitales
 
Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504Cebek - Medidas basicas de seguridad - 201504
Cebek - Medidas basicas de seguridad - 201504
 
CYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos DigitalesCYPED 2015 - Comunicación y Participación en Entornos Digitales
CYPED 2015 - Comunicación y Participación en Entornos Digitales
 
Cebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativaCebek - jornada identidad digital corporativa
Cebek - jornada identidad digital corporativa
 
Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)Gamificación, serious games y negocio (SGGN-1409)
Gamificación, serious games y negocio (SGGN-1409)
 
SGGN 20140605
SGGN 20140605SGGN 20140605
SGGN 20140605
 
Programación III (Java) - 09 Cierre
Programación III (Java) - 09 CierreProgramación III (Java) - 09 Cierre
Programación III (Java) - 09 Cierre
 
Programación III (Java) - 08 threads
Programación III (Java) - 08 threadsProgramación III (Java) - 08 threads
Programación III (Java) - 08 threads
 
Programación III (Java) - 07b Swing
Programación III (Java) - 07b SwingProgramación III (Java) - 07b Swing
Programación III (Java) - 07b Swing
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 Ventanas
 
Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7Programación III (Java) - 05 Genericos y Colecciones - java6-7
Programación III (Java) - 05 Genericos y Colecciones - java6-7
 

Último

Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperiomiralbaipiales2016
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIIsauraImbrondone
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosJonathanCovena1
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxdkmeza
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 

Último (20)

Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperio
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 

Programación III (Java) - 07 Eventos

  • 1. 7. Gestión de eventos con AWT/Swing Qué es Gestión de Eventos El hilo Swing Modelo de Eventos Java Jerarquía de Eventos Clases anónimas y Adapters Ejemplos Programación III Tema 6 - Ventanas
  • 2. Modelos de Gestión de Eventos • Programación Tradicional: – No existen modelos de gestión de eventos. – Programa: Mediante un bucle (polling) – Ejemplo: Si se pulsa ENTER, sólo se detecta si se hace un getChar() • Programación en Java (y en otros lenguajes actuales) – Programación multihilo implícita (2 threads) • Un flujo de control para el programa, otro para las ventanas – Modelos de eventos definidos – El programa es "avisado" automáticamente de todas aquellas acciones (eventos) en los que esté interesado. • Para ello debe definirse previamente qué acciones “interesa escuchar” • El flujo de control que ejecuta el evento es el de las ventanas – Ejemplo: Si el usuario pulsa un botón, el entorno es capaz de avisar al programa haciendo una llamada a un método. Para ello, el botón (el origen del evento) debe conocer al programa (el escuchador del evento). Programación III Tema 6 - Ventanas
  • 3. ¿Qué hace (el hilo) Swing? • En cuanto se crea y visualiza la primera ventana, Swing se encarga de: – "Pintar" las ventanas • Las redibuja si se redimensionan, cambian, se pone una por delante... – Gestionar el ratón y el teclado con relación a las ventanas – Generar los eventos necesarios • Pulsaciones de botones • Paso de ratón por los componentes • Cambios en ventanas • etc. Programación III Tema 6 - Ventanas
  • 4. Modelo de Eventos Java (1) • Distingue dos elementos: – Fuentes de Eventos: elementos sobre los que se producen los eventos (botón, lista, panel...) • Cualquier componente de AWT (o SWING) sobre el que se puedan producir eventos (prácticamente todos) – Escuchadores de Eventos: elementos que reciben las notificaciones de los eventos • Cualquier objeto (perteneciente a una clase) que implemente alguno de los interfaces definidos en Java para la notificación de los eventos. • Funcionamiento: – Una “Fuente de Eventos” puede tener asignado un “Escuchador de Eventos” (o varios) que recibirá las notificaciones de sus eventos. – Cuando se produce un evento sobre la fuente de eventos, su escuchador es informado. – Para ello, se invoca el método que el escuchador tenga definido para la notificación de ese tipo de evento. – El escuchador, dentro de ese método, contendrá el código necesario para tratar ese evento. • ¿Cómo se asigna un escuchador a una fuente de eventos? <FuenteEvento>.add<EventoListener>( <Obj.Escuchador> ) Programación III Tema 6 - Ventanas
  • 5. Modelo de Eventos Java (2): Ej. Programación III Tema 6 - Ventanas
  • 6. Modelo de Eventos Java (3): Interfaces • Interfaces para la notificación de eventos – Interfaces que contienen métodos (que reciben un objeto evento) que serán invocados cuando se produzca un determinado tipo de evento. – Cada interfaz está especializado en capturar un tipo de eventos determinado. – Lista de algunas Interfaces y sus métodos: Interfaz Métodos ActionListener actionPerformed(ActionEvent) FocusListener focusGained, focusLost(FocusEvent) TextListener textValueChanged(TextEvent) KeyListener keyPressed, keyReleased, keyTyped(KeyEvent) MouseListener mouseClicked, mousePressed, mouseReleased, mouseEntered, mouseExited(MouseEvent) MouseMotionListener mouseDragged, mouseMoved(MouseEvent) WindowListener windowActivated, windowClosed, windowClosing, windowDeactivated, windowDeiconified, windowIconified, windowOpened(WindowEvent) Programación III Tema 6 - Ventanas
  • 7. Jerarquía de Eventos (1) – Los métodos de las interfaces, además de ser llamados, reciben un objeto evento que contiene la información que pueda ser relevante. – Los objetos de tipo “Evento” están organizados en una jerarquía de clases de eventos: Programación III Tema 6 - Ventanas
  • 8. Jerarquía de Eventos (2) – Padre de todos los eventos: EventObject – Padre de eventos gráficos: AWTEvent – Cada objeto posee información sobre el evento concreto que se ha producido. • Obtención de la información de un evento: – Cada tipo de evento posee métodos para consultar la información del evento ocurrido. Ejemplos: • Clase EventObject – getSource(): devuelve el objeto (fuente) sobre el que se ha producido el evento • Clase ActionEvent – getModifiers(): información variada sobre el evento (por ejemplo, comb. de teclas pulsadas –shift, alt-) • Clase MouseEvent – getModifiers(): información variada sobre el evento (p ej. el botón pulsado) – getX() y getY(): coordenada pulsación de ratón – getClickCount(): número de clicks seguidos efectuados Programación III Tema 6 - Ventanas
  • 9. Jerarquía de Eventos (3) – Cada fuente de eventos, generará distintos tipos posibles de eventos: Componente Evento Hecho que lo genera Button ActionEvent El usuario hace un clic sobre el botón Checkbox ItemEvent El usuario selecciona o deselecciona el Checkbox List ActionEvent El usuario hace doble click sobre un elemento de la lista ItemEvent El usuario selecciona o deselecciona un elemento de la lista Component MouseEvent El usuario pulsa o suelta un botón del ratón, el cursor del ratón entra o sale o el usuario mueve o arrastra el ratón FocusEvent El componente gana o pierde el foco KeyEvent El usuario pulsa o suelta una tecla TextField ActionEvent El usuario termina de editar el texto (hace un intro) Window WindowEvent La ventana se abre, se cierra, se minimiza, se reestablece o se cierra. Programación III Tema 6 - Ventanas
  • 10. Ej. (1): Ventana y escuchador • Ventana con un botón y una etiqueta. Cuando se pulse el botón queremos que en la etiqueta se visualice la fecha y hora actual. • Pasos: – Crear la ventana y todos sus componentes. – Crear un objeto escuchador que sea capaz de atender a los eventos generados al pulsar un botón. • Evento generado: ActionEvent • Interfaz que posee los métodos para atender ese evento: ActionListener – Asignar ese escuchador al botón. – Incorporar el código a ejecutar cuando se pulse el botón. Ejemplo: VentanaBoton Programación III Tema 6 - Ventanas
  • 11. Ejemplos (1b): Hilos • Aprovechando este ejemplo, veamos cómo funcionan esos dos hilos – A la vez que el main() sigue haciendo cosas – Un evento las puede hacer también • Escribir a un TextArea – Cálculo – Botón Programación III Tema 6 - Ventanas
  • 12. Ej (2): Escuchador = Ventana • ¿Quién debe ser el escuchador? Hay multitud de enfoques. – Puede ser una clase que ya hayamos creado (recordar que se pueden implementar tantas interfaces como se quiera). Por ejemplo la propia ventana. public class VentanaBotonEscuchador extends JFrame implements ActionListener – Puede ser otra clase completamente nueva que sólo se encargue de ser escuchadora. El principal problema está en acceder a la información/recursos que se puedan necesitar para tratar el evento correctamente. – Clase anónimas. Clases que ya proporciona Java que permiten una gestión simple y limpia de los eventos. Un enfoque sencillo aunque sorprendente a primera vista. Ejemplo: VentanaBotonEscuchador Programación III Tema 6 - Ventanas
  • 13. Ej (3): Escuchador de varios eventos – Ejemplo: ventana con tres botones y una etiqueta. – Si tres botones un mismo escuchador ¿cómo saber en el actionPerformed( ) el botón pulsado? – Solución: alternativa sobre el evento public void actionPerformed(ActionEvent e) { JButton botonPulsado = (JButton)e.getSource(); if (botonPulsado == boton1) etiqueta.setText("Se ha pulsado el botón 1"); if (botonPulsado == boton2) etiqueta.setText("Se ha pulsado el botón 2"); if (botonPulsado == boton3) etiqueta.setText("Se ha pulsado el botón 3"); } Ejemplo: VentanaBotones Programación III Tema 6 - Ventanas
  • 14. Ej (4): Varios eventos desde dist tipo – Tenemos una ventana con tres botones, una caja de texto y una etiqueta. – En este caso, ¿cómo averiguamos si el elemento sobre el que se produce el evento es un botón o la caja de texto? – Del mismo modo ... boton3.addActionListener(this); texto.addActionListener(this); ... public void actionPerformed(ActionEvent e) { Object elemento = e.getSource(); ... if (elemento == texto) etiqueta.setText(“Texto rellenado: " + texto.getText()); ... Ejemplo: VentanaBotonesTexto Programación III Tema 6 - Ventanas
  • 15. Ej (5): Conocer el tipo de comp. • Si en algún momento necesitásemos conocer el tipo al que pertenece alguno de los objetos, podríamos hacer Object elemento = e.getSource(); if (elemento instanceof JButton) { System.out.println("El elemento es un botón"); JButton boton = (JButton)elemento; } if (elemento instanceof JTextField) { System.out.println("El elemento es de texto"); JTextField cajaTexto = (JTextField)elemento; } • ¿Qué ventaja ofrece esta última opción? • Ejemplo Completo • Botones (lo ya visto) • Ratón sobre un panel. Evento: MouseEvent - Interfaz: MouseListener • Eventos de ventana (cerrar, minimizar, maximizar...) – Evento: WindowEvent - Interfaz: WindowListener – Acción a realizar: cerrar la ventana y terminar el programa. Ejemplo: VentanaEventos Programación III Tema 6 - Ventanas
  • 16. Adapters (1/2) • Cuando un listener tiene muchos eventos, como por ejemplo el MouseListener, hay que redefinir todos los métodos, aunque sólo se necesite uno de ellos. • Para evitar esto, el API ofrece una clase Adapter para cada listener, en donde ya están redefinidos los métodos del interfaz listener correspondiente. • Podemos utilizar una clase que herede de un Adapter para el tratamiento de los eventos de una forma más cómoda. • Esta clase debe ser interna al JFrame, para poder acceder a sus elementos. Ejemplo: VentanaEventosConAdapter Programación III Tema 6 - Ventanas
  • 17. Adapters (2/2) • Esta clase interna, también se puede definir de forma anónima: this.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); • Muchos entornos de desarrollo, que generan código de manera automática para la gestión de eventos, lo hacen utilizando una clase interna y anónima. Ejemplo: VentanaEventosConAdapterAnonimo Programación III Tema 6 - Ventanas
  • 18. Nota: patrón Observer • El concepto de escuchador responde a un patrón de diseño más general: Observer – Un objeto, llamado sujeto, mantiene una lista de sus objetos observadores – Cada vez que hay un determinado cambio de estado en el sujeto, este notifica a sus observadores • Llamando a un método particular • Pasando información con sus parámetros – Suele concretarse en cumplir un interfaz • Se puede hacer con punteros a función en otros lengs. Programación III Tema 6 - Ventanas
  • 19. Ejemplos de Observer – Objeto/operación que progresa • IProgresa{ void progresa( double p ); } – Objeto/operación que acaba • IAcaba{ void acabo(); } – Objeto/estructura que se puede recorrer • IProcesaRecorrido{ void procesa( Object o ); } – Objeto que muta/cambia • IMutacionListener{ void haMutado( ... ); } • Posible ejemplo: carpeta de disco – Recorrido de ficheros - progresa + opera + acaba – Observador de carpeta que cambia (sus fichs.) Programación III Tema 6 - Ventanas
  • 20. Ejemplo Observer (cont) public class ProcesoFicheros public ProcesoFicheros( String path ) ... public void recorre( IProcesaRecorrido rec, IProgresa prog, IAcaba fin ) ... public void addCambioCarpetaListener( ICambioCarpListener esc ) ... } – En el recorrido llamará a: • rec.procesa( <cada fichero> ) • prog.progresa( <% de vez en cuando> ) • fin.acabo() // al final – Al añadir un escuchador de cambio llamará a: • esc.haCambiado( <info de cambio> ) // cada cambio Programación III Tema 6 - Ventanas
  • 21. Concurso: ProcesoFicheros • Premio para el mejor: ¡1,5 puntos! – Posibles "accesits" para otros mejores • Fecha tope: 18 de noviembre • Condiciones – Interfaz visual ventana para seguir la búsqueda • Lanzamiento de búsqueda - config. de path • Barra de progreso • Información de ficheros encontrados • Lanzamiento de escucha / info. popup de cambios – Todo el código propio excepto uso de API Java6 – Bien documentado javadoc Programación III Tema 6 - Ventanas