Download semana 7 - IACC PES

Document related concepts
no text concepts found
Transcript
PROGRAMACIÓN WEB I
SEMANA 7
ESTE DOCUMENTO CONTIENE LA SEMANA 7
1
ÍNDICE
MANEJO DE EVENTOS EN JAVA ..................................................................................................... 3
INTRODUCCIÓN ............................................................................................................................. 3
APRENDIZAJES ESPERADOS ........................................................................................................... 3
MANEJO DE EVENTOS EN JAVA (AWT y SWING)........................................................................... 4
CONCEPTOS BÁSICOS EN EL MANEJO DE EVENTOS ...................................................................... 4
MECANISMO PARA EL MANEJO DE EVENTOS ............................................................................... 6
ACCIONES PARA PROCESAR UN EVENTO ...................................................................................... 7
PASOS PARA LA DEFINICIÓN DE GUI CON SWING ........................................................................ 7
PRIMERA CLASIFICACIÓN DE LOS TIPOS DE EVENTOS EN JAVA .................................................... 8
EVENTOS DE TECLADO .............................................................................................................. 8
EVENTOS DE RATÓN .................................................................................................................. 8
EVENTOS DE BARRAS ................................................................................................................ 9
EVENTOS DE LISTA..................................................................................................................... 9
EVENTOS DE VENTANA ............................................................................................................. 9
EVENTOS VARIOS ...................................................................................................................... 9
SEGUNDA CLASIFICACIÓN DE LOS TIPOS DE EVENTOS EN JAVA................................................. 10
EVENTOS GENERALES .............................................................................................................. 10
EVENTOS ESPECÍFICOS ............................................................................................................ 10
TERCERA CLASIFICACIÓN DE LOS TIPOS DE EVENTOS EN JAVA .................................................. 14
EVENTOS DE BAJO NIVEL......................................................................................................... 14
EVENTOS DE ALTO NIVEL ........................................................................................................ 15
LAS CLASES DE ESCUCHA ............................................................................................................. 15
EJEMPLO DE PROGRAMACIÓN .................................................................................................... 17
COMENTARIOS FINALES .............................................................................................................. 18
BIBLIOGRAFÍA .............................................................................................................................. 19
ESTE DOCUMENTO CONTIENE LA SEMANA 7
2
MANEJO DE EVENTOS EN JAVA
INTRODUCCIÓN
En esta semana ahondaremos en la forma en que Java maneja los eventos producidos en la
ejecución de un programa basado en interfaces GUI. Para ello, definiremos algunos conceptos
básicos y revisaremos el mecanismo utilizado y las acciones necesarias para manejar y
procesar los mencionados eventos. Así mismo, esbozaremos una pequeña guía para la
definición de interfaces GUI con SWING.
Nos ocuparemos en forma amplia de las tres clasificaciones, las más utilizadas, acerca de los
tipos de eventos posibles de determinar en Java. Los elementos constitutivos de dichas tres
clasificaciones serán abordadas en profundidad, incluidas tablas y ejemplos, con el objetivo de
ampliar nuestro conocimiento de ellas.
APRENDIZAJES ESPERADOS
Se espera que, al final de esta clase, el alumno sea capaz de reconocer y clasificar los eventos
más comunes del lenguaje Java por medio de la visualización de interfaces gráficas de usuario.
Además, debe ser capaz de ilustrar la aplicación de eventos en Java a través de la
interpretación del código de programación respectivo.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
3
MANEJO DE EVENTOS EN JAVA (AWT Y SWING)
Como se ha visto en semanas anteriores, los eventos en Java se relacionan, en tanto lenguaje
orientado a objetos, con dos componentes fundamentales del lenguaje: AWT y Swing.
De ellos, a modo de resumen, podemos mencionar sus características principales.
AWT




Constituye la primera librería gráfica de este lenguaje.
Utiliza llamadas a sistemas nativos de ventanas, también llamados componentes
pesados.
Es un intento por establecer una interfaz de programación de aplicaciones (API)
genérica, aplicable a todos los sistemas de ventanas.
Sus principales problemas fueron que carecía de una gran cantidad de componentes y
las aplicaciones generadas dependían en gran medida del sistema operativo sobre el
cual se trabajara y de su entorno o sistema de ventanas.
SWING




Es la evolución natural de AWT con la cual se integra de manera transparente.
Utiliza código nativo de Java para dibujar sobre ventanas provistas por el sistema de
ventanas de la plataforma en cual se despliega. Se conoce esta facilidad como
componentes ligeros.
Es propietario de una gran cantidad de componentes.
Uniforma las aplicaciones gráficas en lo que respecta a entornos de ventanas y manejo
de componentes y eventos.
CONCEPTOS BÁSICOS EN EL MANEJO DE EVENTOS
Se sabe ciertamente que en Java cualquier evento es representado a través de objetos
específicos. Un evento ocurre siempre que un usuario interactúa con una aplicación, lo que —a
su vez— produce un efecto dentro del programa y este responde mostrando una reacción,
ejecutando una acción determinada o realizando una tarea específica. Los eventos en Java son
interpretados y ejecutados a través de JVM (Java Virtual Machine).
Ejemplos de ello son:



Hacer clic en un botón de una ventana.
Arrastrar un elemento o seleccionar un texto con el mouse.
Aprobar una tarea presionando la tecla Enter o Intro.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
4
Comprender cómo dicha interacción se produce internamente es fundamental para realizar
una adecuada programación en una GUI. Gráficamente se puede concebir esto de la siguiente
manera:
Fuente: http://www.slideshare.net/catrachito/swing2-3155722
Los encargados de generar eventos específicos en Java son precisamente AWT y Swing. Antes
de seguir adelante, se debe puntualizar que para cada uno de los generadores de eventos, a
saber AWT y Swing, existe en el lenguaje Java su respectivo paquete manejador de eventos.
Así, se tiene que sus componentes específicos o paquetes para manejo de eventos son:
AWT
Swing


java.awt.AWTEvent
javax.swing.event
ESTE DOCUMENTO CONTIENE LA SEMANA 7
5
MECANISMO PARA EL MANEJO DE EVENTOS
Ahondando un poco más en el mecanismo para manejo de eventos de este lenguaje, se tiene
el siguiente esquema, que representa los elementos que intervienen en él y sus características.
Un evento y la reacción que se gatilla ante él tiene los tres siguientes componentes claves:
a)
b)
c)
El EventSource (o sea, la fuente de un evento o el evento mismo).
El EventObject (objeto que maneja el evento producido).
El Event Listener (es quien “escucha” el evento y ejecuta el método apropiado
para este).
Fuente: www.dsi.fceia.unr.edu.ar/downloads/informatica/info_III/eventos.ppt
1) La fuente del evento o el Evento (event source)
– Este es el componente GUI, a través del cual interactúa el usuario con el
programa.
– Se comprueba que la información acerca de un evento se encuentra
encapsulada.
– El evento se deriva desde java.util.EventObject hacia java.awt.AWTEvent.
– Para fuentes diferentes de eventos diferentes, se comprueban tipos de
eventos diferentes.
– Diferentes fuentes de eventos producen diferentes tipos de eventos, por
ejemplo:
• ActionEvent es enviado por un botón.
• WindowEvent es enviado por una ventana.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
6
2) El objeto evento (event object)
– El objeto evento contiene la información del evento ocurrido.
– Este también incluye la información necesaria para manejar el evento por
parte del que escucha.
– Al momento de ocurrir un evento, el objeto evento se lo envía a los
escuchadores registrados para dicho evento.
3) El que escucha el evento (event listener)
– Es quien implementa una interface especial y determinada para un evento.
– Determina cual es la reacción específica a realizar ante un evento en
particular.
ACCIONES PARA PROCESAR UN EVENTO
Al momento de procesar eventos en una aplicación, es necesario realizar primordialmente dos
acciones:
1. Se debe registrar un event listener para cada uno de los componentes GUI, que se
espera puedan generar un evento. Este es un objeto correspondiente a aquella clase
que debe implementar todas las interfaces, una o más, del tipo event listener de los
paquetes de java.awt.event y de java.swing.event.
2. Se debe implementar un método específico o más para manejar el o los eventos,
llamados event handler, el que debe estar en concordancia con el tipo de evento que
se gatilla.
PASOS PARA LA DEFINICIÓN DE GUI CON SWING
En Swing, por su parte, los pasos a seguir para definir GUI o Intefaces Gráficas de Usuario, a
través de los cuales se generarán los eventos, son los siguientes:
1. Se deben crear primeramente los componentes.
2. En segundo lugar, para cada componente, se definirán sus propiedades.
3. Luego, se deberán crear los contenedores encargados de almacenar los componentes
creados en el paso 1.
4. Con el objeto de colocar los componentes creados en el paso 1 en los contenedores
del paso 3 se deben especificar los LayoutManagers.
5. Una vez hecho lo anterior, se añadirán los mencionados componentes en sus
contenedores.
6. A continuación se deberá definir el escucha de cada evento o event listener.
7. Finalmente, se está en condiciones de poder mostrar la GUI creada al usuario.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
7
El comportamiento de los componentes aquí mencionados es el siguiente: cada componente
gatilla un event handler o manejador, en función del tipo de evento específico que ha
sucedido. Cada componente puede registrar uno o más manejadores encargados de manejar
eventos del mismo tipo. A su vez y en forma recíproca, cada evento puede ser atendido por
uno o más manejadores.
PRIMERA CLASIFICACIÓN DE LOS TIPOS DE EVENTOS EN JAVA
Una de las clasificaciones de los tipos de eventos en Java es a través del elemento que los
genera, mirado desde el punto de vista del usuario del programa. Así, esta clasificación se
puede concebir de la siguiente forma:
a)
b)
c)
d)
e)
f)
Eventos de Teclado
Eventos de Ratón
Eventos de Barras
Eventos de Lista
Eventos de Ventana
Eventos Varios
Cada uno de ellos genera respuestas específicas, ante la aplicación de acciones de diferentes
elementos activos en la interface GUI de una aplicación. Su explicación y componentes se
muestran a continuación.
EVENTOS DE TECLADO
Son aquellos que se generan como respuesta a una acción (pulsar y soltar) del usuario,
mientras el foco de entrada lo tiene un Componente.
EVENTOS DE RATÓN
Son aquellos que se generan como respuesta a acciones ejecutadas sobre el mouse, estando
este dentro de las coordenadas de un Componente.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
8
EVENTOS DE BARRAS
Son aquellos que se generan como una respuesta a la acción realizada por el usuario sobre
scrollbars o barras de desplazamiento en alguna ventana de la aplicación.
EVENTOS DE LISTA
Son aquellos que se generan al realizar la selección de algún elemento existente en una lista.
EVENTOS DE VENTANA
Son aquellos generados como una respuesta a algún cambio en un frame, ventana o diálogo.
EVENTOS VARIOS
Son aquellos que se generan como respuesta a acciones diversas ejecutadas por parte del
usuario.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
9
Cada uno de estos tipos de eventos se pueden reflejar, a su vez y hablando en forma práctica,
en una interfaz GUI con la cual interactúe el usuario en el manejo de un programa o aplicación.
Por ejemplo:
Fuente: www.dsi.fceia.unr.edu.ar/downloads/informatica/info_III/eventos.ppt
SEGUNDA CLASIFICACIÓN DE LOS TIPOS DE EVENTOS EN JAVA
Como ya se ha dicho en forma reiterada, los eventos son los que permiten a una aplicación
realizar una interacción fluida con los usuarios. A grandes rasgos, Java distingue dos tipos de
eventos: los eventos genéricos, generales o simples y los eventos específicos.
EVENTOS GENERALES
Los eventos generales o simples son aquellos producidos por una acción de tipo general.
También son llamados eventos estándares.
EVENTOS ESPECÍFICOS
Los eventos específicos son aquellos que se generan a partir de una acción única e inequívoca
a partir de una GUI. Ellos indican de manera específica el componente a partir del cual se ha
generado un evento.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
10
A continuación, se exponen diversas tablas que ilustran aquellos eventos posibles de observar
y el método asociado a cada uno de ellos.
Eventos estándares de teclado y de ratón
Eventos generados por Componentes específicos (1)
ESTE DOCUMENTO CONTIENE LA SEMANA 7
11
Eventos generados por Componentes específicos (2)
Los dos tipos de eventos, recién presentados, se instancian a partir de la clase java.awt.event y
para programarlos, cuando se trata de manejar eventos, existen dos opciones:
1. Construir un manejador de eventos en forma detallada, a través de la implementación
de un método llamado handleEvent(), por ejemplo:
ESTE DOCUMENTO CONTIENE LA SEMANA 7
12
2. Pasar los eventos generados a un método llamado action().
Un método action() en general tiene la siguiente estructura:
Un ejemplo de implementación se muestra a continuación:
ESTE DOCUMENTO CONTIENE LA SEMANA 7
13
TERCERA CLASIFICACIÓN DE LOS TIPOS DE EVENTOS EN JAVA
Una tercera clasificación de los tipos de eventos posibles de capturar en Java está dada por los
llamados eventos de bajo y de alto nivel.
EVENTOS DE BAJO NIVEL
Son los más comunes y ya se han visto en otras clasificaciones, son producidos por el usuario
de una aplicación con acciones como pulsar una tecla, efectuar movimientos del cursor con el
ratón o visualizar componentes en pantalla. Las clases asociadas a este tipo de eventos se ven
en la siguiente tabla:
Se muestran, a continuación, los métodos definidos para KeyEvent y MouseEvent.
KeyEvent
MouseEvent
ESTE DOCUMENTO CONTIENE LA SEMANA 7
14
EVENTOS DE ALTO NIVEL
Los eventos de alto nivel se relacionan directamente con los componentes y su semántica. Se
generan típicamente al momento de pulsar un botón sobre una GUI o cuando un texto
contenido en un campo de ese tipo es modificado. Sus clases asociadas son:
LAS CLASES DE ESCUCHA
Las clases de escucha o Listeners son proporcionadas por Java para realizar la función de
captura de los eventos, tanto de bajo como de alto nivel. Cada tipo de evento existente en Java
cuenta con su propia clase de escucha o interface. Estas, dependiendo del evento que se haya
producido y capturado, ejecutarán el conjunto de métodos contenidos en la declaración de la
clase de escucha respectiva.
Se muestra, a continuación, una tabla de las clases de escucha de Java y los métodos
correspondientes a cada una de ellas.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
15
ESTE DOCUMENTO CONTIENE LA SEMANA 7
16
EJEMPLO DE PROGRAMACIÓN
En el programa anterior las acciones definidas son:



Agregar una respuesta para cerrar una ventana.
Agregar a la ventana un botón y adaptar su tamaño al del botón.
El botón se hace receptivo al mouse, respondiendo con la impresión de una línea de
caracteres en la consola.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
17
COMENTARIOS FINALES
Hemos visto la manera en que Java maneja los eventos producidos en la ejecución de un
programa basado en interfaces GUI, a través de la activación por parte del usuario de
dispositivos de entrada tales como el ratón o el teclado. Los efectos producidos en un
programa, de esta forma, gatillan su reacción ejecutándose tareas específicas por parte de
este. Java Virtual Machine es la encargada de la generación de dichos eventos. El mecanismo
involucrado en esta reacción consta de tres componentes: EventSource, EventObject y
EventListener. Las acciones necesarias para procesar un evento pasan por registrar un eventlistener e implementar uno o más métodos específicos para responder a ellos, es el llamado
event-handler.
Por otra parte, existen, al menos, tres clasificaciones de los tipos de eventos producidos en
Java. La primera de ellas incluye tanto el hardware a través del cual se ha gatillado el evento,
teclado o ratón, como también los componentes de una aplicación GUI, que reciben los
estímulos necesarios para generar una reacción al interior de la misma, tales como ventanas,
barras de desplazamiento, etcétera. La segunda clasificación nos habla de eventos generales y
específicos, pero siempre dentro del contexto de cuál es el elemento que gatilla un
determinado evento. La tercera clasificación de eventos en Java, por su parte, los diferencia
entre eventos de bajo nivel y de alto nivel. Los primeros se refieren a aquellos eventos
generados por el usuario a través del hardware, de nuevo teclado y ratón, y los segundos son
los que la interfaz gráfica capta por medio de la modificación de algún componente del
software o de la acción directa del usuario sobre alguno de estos componentes.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
18
BIBLIOGRAFÍA
Gómez López, J. (2011). Administración de Sistemas Operativos. Un enfoque práctico. 2ª
Edición. Madrid, España: RA-MA Librería y Editorial Microin.
Holzer, S. (2000). La Biblia de Java 2. Madrid, España: Anaya Multimedia.
Patrick, N. & Herbert, S. (2000). Java, Manual de Referencia. Madrid: McGraw-Hill.
Sánchez, J. (2005). Programación en Java 2. Madrid, España: McGraw-Hill.
Schildt, H. (2003). Manual de Referencia Java 2. Madrid, España: McGraw-Hill.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
19