Vista previa del material en texto
7-11-2014 Eventos en JAVA Interfaz ActionListener Docentes: Freddy Manuel Palacios Toribio & Luis Manuel Espinoza Estrada UNAN - MANAGUA Contenido I. Introducción ................................................................................................................................ 2 II. Tipos de eventos comunes de la GUI e interfaces de escucha ................................................... 3 III. Cuando ocurre un evento ....................................................................................................... 4 IV. Cómo funciona el manejo de eventos ..................................................................................... 4 I. Introducción Uno de los aspectos más importantes a tomar en cuenta cuando programamos de Java es que este dispone de eventos. Por ejemplo cuando una persona da clic sobre un botón se desencadena un evento y dependiendo de la programación del botón este realizará una acción. Según (Dean & Dean, 2009) Un evento es un mensaje que indica al programa que algo ha ocurrido. Por ejemplo, si el usuario hace clic en un botón, entonces se genera un evento, y le indica al programa que en un botón particular se hizo clic. Más formalmente, cuando un usuario hace clic en un botón, se dice que el objeto de botón activa un evento. Observe estos ejemplos adicionales de eventos: Ilustración 1 - Tomada de Introducción a la programación con Java II. Tipos de eventos comunes de la GUI e interfaces de escucha Ilustración 2 - Tomada de Como programar en Java La ilustración 2 muestra una jerarquía que contiene muchas clases de eventos del paquete java.awt.event. Según (Deitel & Deitel, 2008) Para cada tipo de objeto evento hay, por lo general, una interfaz de escucha de eventos que le corresponde. Un componente de escucha de eventos para un evento de GUI es un objeto de una clase que implementa a una o más de las interfaces de escucha de eventos de los paquetes java.awt.event y javax.swing.event. Muchos de los tipos de componentes de escucha de eventos son comunes para los componentes de Swing y de AWT. Dichos tipos se declaran en el paquete java.awt.event, y algunos de ellos se muestran en la siguiente ilustración. Los tipos de escucha de eventos adicionales, específicos para los componentes de Swing, se declaran en el paquete javax.swing.event. En este documento trabajaremos con eventos de tipo ActionEvent. Cada interfaz de escucha de eventos especifica uno o más métodos manejadores de eventos que deben declararse en la clase que implementa a la interfaz. III. Cuando ocurre un evento Según (Deitel & Deitel, 2008) Cuando ocurre un evento, el componente de la GUI con el que el usuario interactuó notifica a sus componentes de escucha registrados, llamando al método de manejo de eventos apropiado de cada componente de escucha. Por ejemplo, cuando el usuario oprime la tecla Intro en un objeto JTextField, se hace una llamada al método actionPerformed del componente de escucha registrado. ¿Cómo se registró el manejador de eventos? ¿Cómo sabe el componente de la GUI que debe llamar a actionPerformed, en vez de llamar a otro método manejador de eventos? En la siguiente sección responderemos a estas preguntas y haremos un diagrama de la interacción. Ilustración 3 - Tomada de Como programar en Java IV. Cómo funciona el manejo de eventos (Este texto fue tomado de Como programar en Java de (Deitel & Deitel, 2008) y adaptado para este ejemplo) Mostraremos cómo funciona el mecanismo de manejo de eventos, utilizando al botón agregar del ejemplo siguiente. Tenemos dos preguntas sin contestar: 1. ¿Cómo se registró el manejador de eventos? 2. ¿Cómo sabe el componente de la GUI que debe llamar a actionPerformed en vez de llamar a algún otro método manejador de eventos? La primera pregunta se responde mediante el registro de eventos que se lleva a cabo en las líneas 50 a 80 de la aplicación. 1. Registro de eventos Cuando se ejecuta la línea 50 de la figura anterior agregar.addActionListener(new ActionListener() { … }); Se crea un objeto de la clase ActionListener y registra el objeto como el componente de escucha para los eventos ActionListener. Mediante el uso de este mecanismo, cada componente ligero de GUI de Swing mantiene su propia lista de componentes de escucha que se registraron para manejar los eventos del componente. 2. Invocación del manejador de eventos El tipo de componente de escucha de eventos es importante para responder a la segunda pregunta: ¿Cómo sabe el componente de la GUI que debe llamar a actionPerformeden vez de llamar a otro? Todo componente de la GUI soporta varios tipos de eventos, incluyendo eventos de ratón, eventos de tecla y otros más. Cuando ocurre un evento, éste se despacha solamente a los componentes de escucha de eventos del tipo apropiado. El despachamiento (dispatching) es simplemente el proceso por el cual el componente de la GUI llama a un método manejador de eventos en cada uno de sus componentes de escucha registrados para el tipo de evento que ocurrió. Cada tipo de evento tiene uno o más interfaces de escucha de eventos correspondientes. Por ejemplo, los eventos tipo ActionEvent son manejados por objetos ActionListener, los eventos tipo MouseEventson manejados por objetos MouseListener y MouseMotionListener, y los eventos tipo KeyEventson manejados por objetosKeyListener. Cuando ocurre un evento, el componente de la GUI recibe (de la JVM) un ID de evento único, el cual especifica el tipo de evento. El componente de la GUI utiliza el ID de evento para decidir a cuál tipo de componente de escucha debe despacharse el evento, y para decidir cuál método llamar en cada objeto de escucha. Para un ActionEvent, el evento se despacha al método actionPerformed de todos los objetos ActionListener registrados (el único método en la interfaz ActionListener). En el caso de un MouseEvent, el evento se despacha a todos los objetos MouseListener o MouseMotionListener registrados, dependiendo del evento de ratón que ocurra. El ID de evento del objeto MouseListener determina cuáles de los varios métodos manejadores de eventos de ratón son llamados. Todas estas decisiones las administran los componentes de la GUI por usted. Todo lo que usted necesita hacer es registrar un manejador de eventos para el tipo de evento específico que requiere su aplicación, y el componente de GUI asegurará que se llame al método apropiado del manejador de eventos, cuando ocurra el evento. (Deitel & Deitel, 2008) I. Introducción II. Tipos de eventos comunes de la GUI e interfaces de escucha III. Cuando ocurre un evento IV. Cómo funciona el manejo de eventos 1. Registro de eventos 2. Invocación del manejador de eventos