Professional Documents
Culture Documents
Programa de la asignatura:
Programación orientada a objetos II
Unidad 1. Eventos de Java
Índice
Presentación de la unidad
Propósito
Competencia específica
• Si quieres comentar asuntos personales que no tengan relación directa con los
contenidos de las unidades, utiliza la categoría Asuntos personales (realiza estos
comentarios con respeto y responsabilidad).
• Si tienes dudas o comentarios relacionados con detalles técnicos, por ejemplo, sobre la
instalación de alguno de los programas que se usan en el curso, ingresa a la sección
Aspectos técnicos.
• Si tus comentarios se refieren a temas directamente relacionados con el contenido de la
asignatura, da clic en la categoría Aspectos sobre el contenido de la asignatura.
Cualquier aplicación computacional requiere que los usuarios interactúen con el sistema,
mediante laspantallas o interfaces gráficas de usuario (GUI), para que realicen operaciones
sobre estas y con base ello, laaplicaciónpueda responder con acciones correctas para las que
fue realizadadicha aplicación, ya sea teclear datos, seleccionar respuestas o simplemente
oprimir un botón.
Por tanto, el hecho de que unaaplicación responda a las operaciones que realizan los usuarios,
significa que esas operaciones han sido programadas precisamente para que laaplicación
responda a cada una de las diferentes acciones que el usuario pueda llegar a realizar.
Esas “operaciones” que los usuarios realizan son llamados eventosy es el primer tema de la
asignatura POOII, que ayudara a realizar interfaces gráficas, utilizando el paradigma orientado a
objetos (visto en POOI) con el lenguaje JAVA.
Para comenzar este subtema es necesario que recuerdes que las interfaces gráficas de usuario
están creadas en base a elementos, tales como botones, cajas de texto, etiquetas, etc. Estos
elementos son conocidos como componentes gráficos.
Un componente gráfico deberá tener tantos escuchas como eventos tenga relacionados, pues
cada uno de los escuchas deberá estar al pendiente de cada evento que pudiera ocurrir. Por
ejemplo:
Si se tiene un botón (componente gráfico)y se da un clic sobre él, realiza una acción, si es una
acción diferente es doble clic y si es una acción diferente a las otras dos es clic derecho,
entonces, nuestro componente botón deberá contar con 3 escuchas, uno para cada evento
asociado, y evidentemente cada evento su propio método asociado a la acción desencadenada
para cada caso en particular.
Los escuchas a su vez deben tener métodos asociados que realicen las acciones
correspondientes a la respuesta que deba brindar el componente al evento asociado.
Veamos el siguiente ejemplo de código (instrucciones con que se crean un programa) 1.Evento
marco:
package clases;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
/**
* @author ESAD
*/
frame.setLocation(100, 100);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
System.exit(0);
});
*Nota 1: Los adaptadores (Adapter) son clases abstractas que permiten la implementación de
una interfaz (recuerda las interfaces vistas en POOI) y permite redefinir los métodos declarados
en la interfaz.
*Nota 2: Se recomienda ejecutar el ejemplo sin la sección morada y cerrar la ventana para ver
que el programa aún sigue en ejecución. Después de añadir dicha sección volver a ejecutar la
clase, y con esta porción de código laaplicación finalizará al cerrar el marco.
*Nota 3: Toma en cuenta que para poder utilizar eventos se requiere invocar el API de JAVAawt
(AbstractWindowToolkit, en español Kit de Herramientas de Ventana Abstracta), y para el
manejo de componentes gráficos se requiereel swing (biblioteca de gráficos), sin estos
componentes no podrían manejarse estos elementos.
En este tema se abarcarán los tipos de eventos, los cuales se han dividido en 3 subtemas que
serian, los eventos que se generan con el ratón, con el teclado y una tercera división de los
eventos que no corresponden a los dos anteriores.
Cabe mencionar que en este material no se están dando las especificaciones de todos y cada
uno de los eventos existentes, si no de los más utilizados. Dado que cada componente gráfico
cuenta con sus propios eventos, y existen libros completos para el estudio de estos, que en
nuestro caso solo se pretende que comprendas lo que son y cómo utilizarlos, para conocer
información especialización dirígete a la sección de “para saber más” al final de la unidad y
encontrarás la liga que los creadores de JAVA proporcionan con todas las especificaciones a
detalle de cada evento existente.
A continuación se enlistan los tipos de eventos del ratón y el momento en el que cada uno de
ellos se detecta y se activa.
Estos eventos pueden asignarse a casi todos los componentes. Es importante que al asignar
eventos a un componente, a pesar de que pueden ligarse varios al mismo componente, es
recomendable que no se asignen muchos eventos del mismo tipo para evitar confusiones.
Ahora veamos un ejemplo de cómo se utilizan estos eventos, observa la siguiente clase:
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjavax.swing.JButton;
importjavax.swing.JFrame;
/**
* @author ESAD
8
*/
publicclassEjemploEventoRaton {
publicstaticvoidmain (String[] args){
JButtonboton=new JButton("Oprime");
boton.setVisible(true);
boton.setSize(50, 50);
boton.setLocation(100,100);
System.out.print("Disteclic en el botonOprime");
}
});
frame.addWindowListener(new WindowAdapter() {
@Override
publicvoidwindowClosing(WindowEvent e){
System.exit(0);
}
});
}
El ejemplo marca:
-En azul la definición de la clase, el método principal y la importación de las librerías necesarias,
así como los cierres requeridos.
-En sombra verde la declaración de un marco y un botón, así como sus propiedades (veremos
este tema más a fondo en la siguiente unidad, por ahora lo importante es el evento).
-En sombreado morado la adición del escuchador al marco y su manipulación (que ya ha sido
explicado en el ejemplo 1).
-En sombreado naranja la adición del escuchador del ratón (addMouseListener) al botón
(llamado también boton, sin acento porque JAVA no los permite en el código), que escuchara los
eventos que ocurran con el mouse sobre el componente. Al escuchador se le envía como
parámetro la creación del adaptador (MouseAdapter), en el adaptador se redefine el método
(@Override) para detectar el evento (mouseClicked) que recibe como parámetro un evento del
tipo ratón (MouseEvent).Al ejecutar el programa se van a detectar todos los eventos que el
usuario realice, pero solo se ejecutará la acción de impresión si el evento detectado es el
indicado (mouseClicked). Si no se agrega este evento al botón este no realizará absolutamente
nada, pues no se ha indicado que deba reaccionar ante algún evento.
*Nota1: se recomienda ejecutar el ejemplo sin la sección naranja y hacer varios clics sobre el
botón, para ver que el programa aún sigue en ejecución sin hacer nada, y después añadir dicha
sección para volver a ejecutar la clase, y ver con esta porción de código, laaplicación que
imprimirá el mensaje colocado.
A continuación se enlistan los tipos de eventos del ratón y el momento en el que cada uno de
ellos se detecta y se activa.
Al igual que en el caso anterior no se recomienda utilizar varios eventos de teclado sobre el
mismo componente.
Ahora en siguiente ejemplo verás cómo se utilizan estos eventos, observa la siguiente clase:
10
importjava.awt.event.KeyAdapter;
importjava.awt.event.KeyEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjavax.swing.JFrame;
importjavax.swing.JTextField;
/**
* @author ESAD
*/
publicclassEjemploEventoTeclado {
frame.addWindowListener(new WindowAdapter() {
@Override
publicvoidwindowClosing(WindowEvent e){
System.exit(0);
}
});
}
11
publicstaticvoidmetodoAccion(){
System.out.println("Mensaje");
}
El ejemplo marca:
-En azul la definición de la clase, el método principal y la importación de las librerías necesarias,
así como los cierres requeridos.
-En sombra verde la declaración de un marco y una caja de texto, así como sus propiedades
(veremos este tema más a fondo en la siguiente unidad, por ahora lo importante es el evento).
-En sombreado morado la adición del escuchador al marcoy su manipulación (que ya ha sido
explicado en el ejemplo 1).
-En sombreado naranja la adición del escuchador del teclado (addKeyListener) a la caja de texto
(llamada cajaTexto), que escuchara los eventos que ocurran con el teclado sobre el
componente. Al escuchador se le envía como parámetro la creación del adaptador (KeyAdapter),
en el adaptador se redefine el método (@Override) para detectar el evento (keyPressed) que
recibe como parámetro un evento del tipo teclado (KeyEvent), se van a detectar todos los
eventos pero solo se ejecutará la acción de llamar al método (metodoAccion), el evento
detectado es el indicado (keyPressed). Si no se agrega este evento a la caja de texto esta no
realizará absolutamente nada, pues no se ha indicado.
En este ejemplo puedes observarque no solo se deben colocar las acciones a realizar dentro de
la estructura de manipulación del evento, si no que también pueden realizarse llamadas a
métodos para tener un código mejor estructurado y modular.
*Nota 1: se recomienda ejecutar el ejemplo sin la sección naranja y teclear sobre la caja de texto
para ver que el programa aún sigue en ejecución sin hacer nada, y después añadir dicha sección
volver a ejecutar la clase, y ver con esta porción de código que laaplicación imprimirá el mensaje
colocado.
12
Cada uno de los componentes gráficos tiene una lista de eventos predeterminados. Por ejemplo,
el código presentado en el subtema 1.1.2, es un evento de ventana (WindowEvent) que detecta
el cierre de esta (windowClosing) y para asignarlos se utilizó el escucha de ventanas
(addWindowListener). Por consecuencia, este evento solo aplica para las ventanas, pues son las
únicas que cuentan con un elemento de cierre. Aunque, se podría asignar un evento para
detectar si se ábrela ventana (windowOpened).
Para lo anterior, deberás tomar en cuenta (en base a los ejemplos), que para manipular eventos
mediante el código requieres:
Un componente.
Un escuchador.
Un adaptador.
Indicar el evento deseado a detectar.
Tipo de evento.
E indicar las acciones a seguir si se detecta el evento indicado.
Ahora que ya tienes los elementos necesarios para comprender los eventos, te invitamos a
participar en la siguiente actividad para que pongas en práctica tus conocimientos.
13
Actividad 2.Eventos
Esta actividad tiene la finalidad de identificar los diferentes eventos presentados y realizar una
descripción propia de los elementos que lo componen.
Ingresa al aula virtual para realizar la actividad.
Propósito: Enlistar los diferentes eventos presentados y redactar una descripción propia de
cada uno de ellos.
Instrucciones:
1. Identifica y enlista los diferentes eventos presentados en los temas estudiados durante
toda la unidad.
2. Redacta una descripción propia para cada evento, sin copiar de ninguna fuente, ya que
debe ser una descripción que tú mismo realices y comprendas. Cada una de las
descripciones deberá ser un párrafo de al menos 5 líneas.
3. En un archivo de texto, coloca los elementos solicitados en el punto 1 y 2.
4. Guarda la actividad con el nombre POO2_U1_A2_XXYZ. Sustituye las XX por las dos
primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la
inicial del apellido materno.
5. Ingresa al apartado de tareas y sube tu archivo
6. Envía el archivo al facilitador(a) para recibir retroalimentación.
En esta actividad deberás identificar los elementos que componen el manejo de eventos y su
estructura sintáctica y así podrás afirmar tus conocimientos que adquiriste durante toda la
unidad.
Propósito: Realizar una descripción propia de los componentes y estructura de los eventos.
Ahora es necesario que sigas las siguientes Instrucciones:
1. Identifica los componentes y la estructura requerida para el manejo de eventos en los
temas de esta unidad.
14
2. Desarrolla una descripción con tus propias palabras de los puntos que identificaste en
la indicación anterior.
3. Guarda la actividad con el nombre POO2_U1_A3_XXYZ. Sustituye las XX por las dos
primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la
inicial del apellido materno.
4. Ingresa al apartado de tareas y sube tu archivo
5. Envía el archivo al facilitador(a) para recibir retroalimentación.
Autoevaluación
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta tercera
unidad del curso, es necesario que resuelvas la actividad integradora. Recuerda que es muy
importante leer cuidadosamente los planteamientos indicados y elegir la opción adecuada para
cada uno.
Como parte de la evaluación de esta unidad, es necesario que realicesun reporte donde
expliques eventos diferentes con losque cuenta JAVA y que éstos no se hayan visto durante la
unidad; así podrás observar que existe una gran variedad de eventos y también conocer otras
estructuras y componentes de los mismos.
Propósito: Investigar el uso y estructura de diferentes tipos de eventos que maneje JAVA para
conocer una la variedad de estos y elegir el más adecuado para cada situación de las
aplicaciones.
Instrucciones:
1. Identifica y elabora una lista de los eventos, los componentes y estructura para manejar
los mismos de los temas vistos en esta unidad, agregando una descripción de la
estructura.
2. Investiga las características, estructura algorítmica, sintáctica y uso de al menos 5
eventos que no se hayan presentado en el desarrollo de la unidad en donde también
identifiques lo siguiente:
-Los componentes requeridos para el manejo de eventos.
-La estructura algorítmica (pasos) y sintáctica (código) para manejar eventos.
3. En un archivo de texto, elabora un reporte con los elementos solicitados en el punto
anterior.
4. Descarga el formato de entrega del reporte.
15
5. Guarda la actividad con el nombre POO2_U1_EA_XXYZ. Sustituye las XX por las dos
primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la
inicial del apellido materno.
6. Envía el archivo al facilitador(a) a través de la sección de Evidencias.
7. Consulta la escala de evaluación para conocer los parámetros de la actividad.
Autorreflexiones
Cierre de la unidad
Has concluido la primer unidad del curso, a lo largo de esta comprendiste el tema de eventos,
que son los que ayudan a identificar lo que el usuario está realizando sobre una aplicación, y al
programar ésta responda adecuadamente a lo que el usuario realice.
También observaste los elementos que se utilizan para manejar eventos, tales como los
escuchadores que captan los eventos, y los adaptadores que permiten la sobre escritura de los
métodos que controlarán la respuesta del programa a dichos eventos.
Finalmente identificaste los tipos de eventos que pueden detectarse, ya sea con el ratón (como
clic, doble clic, etc.), con el teclado (la presión de ciertas teclas), o con algún otro componente
(como el cierre de ventanas) y sus respectivos ejemplos con código en JAVA.
En la siguiente unidad se hablara sobre componentes gráficos, en la cual será necesario todo lo
que se ha visto en esta primer unidad, ya que debemos detectar lo que los usuarios realizan
sobre cada uno de los componentes que veremos en dicha unidad.
Es importante que instales un IDE en tu computadora personal para que pases todos los
ejemplos de código y veas cómo funcionan, de esta manera podrás analizar el funcionamiento
de los códigos presentados.
16
*Nota: se recomienda que instales NetBeans 7.0, como IDE, por su facilidad de uso, este puede
ser descargado gratuitamente de:
Página oficial del IDE NetBeans. Editor: NetBeanscommunity, ORACLE. Esta página ofrece la
descarga gratuita del IDE en la siguiente liga:http://netbeans.org/downloads/
Si deseas conocer los eventos asociados a cada tipo de componente, revisa la tabla de los
componentes de swing con los escuchadores que cada uno puede asociar:
Tutoriales de JAVA. Editor: Oracle and/oritsaffiliates, ORACLE. Esta compañía, ofrece un amplio
tutorial de programación del lenguaje JAVA, y un tema específico sobre eventos en:
http://docs.oracle.com/javase/tutorial/uiswing/events/eventsandcomponents.html
Fuentes de consulta
17