Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Test
Test
Unidad 1. Eventos
Desarrollo de Software
3er Semestre
Programa de la asignatura:
Programación Orientada a Objetos II
Unidad 1. Eventos
Clave:
Ingeniería: TSU:
15142421 16142421
1
Programación orientada a objetos II
Unidad 1. Eventos
Índice
2
Programación orientada a objetos II
Unidad 1. Eventos
Unidad 1. Eventos
Presentación de la Unidad
Propósito
Competencia específica
3
Programación orientada a objetos II
Unidad 1. Eventos
Cualquier aplicación computacional requiere que los usuarios interactúen con el sistema
mediante las pantallas o interfaces gráficas de usuario (GUI) para que realicen operaciones
sobre estas, y con base en ello la aplicación pueda responder con acciones correctas para
las que fue realizada dicha aplicación, ya sea teclear datos, seleccionar respuestas o
simplemente oprimir un botón.
Por tanto, el hecho de que una aplicación responda a las operaciones que realizan los
usuarios significa que esas operaciones han sido programadas precisamente para que la
aplicación responda a cada una de las diferentes acciones que el usuario pueda llegar a
realizar.
Esas “operaciones” que los usuarios realizan son llamados eventos, y es el primer tema de
la asignatura POOII, que ayudará 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 con base en 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,
porque 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
4
Programación orientada a objetos II
Unidad 1. Eventos
otras dos es clic derecho, entonces, nuestro componente botón deberá contar con 3
escuchas, uno para cada evento asociado, y evidentemente cada evento debe tener 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.
5
Programación orientada a objetos II
Unidad 1. Eventos
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e){
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, se debe
volver a ejecutar la clase y con esta porción de código la aplicación finalizará al cerrar el
marco.
*Nota 3: Toma en cuenta que para poder utilizar eventos se requiere invocar el API de JAVA
awt (AbstractWindowToolkit, en español Kit de Herramientas de Ventana Abstracta), y para
el manejo de componentes gráficos se requiere el 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 tres subtemas
que son, 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.
6
Programación orientada a objetos II
Unidad 1. Eventos
Cabe mencionar que en este material no se están dando las especificaciones de todos y
cada uno de los eventos existentes, sino 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 este caso solo se pretende que comprendas lo que son y cómo utilizarlos, para
conocer información especializada dirígete a la sección “Para saber más”, que se encuentra
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.
Eventos de ratón
Tipo Detección
mouseClicked Se ha hecho clic con el ratón sobre el componente. El clic
completo incluye presionar el ratón y soltarlo.
*Para detectar un doble clic se contabiliza cada clic sencillo.
mouseDragged Se ha presionado el ratón y sin soltarlo se ha arrastrado
sobre el componente.
mouseEntered El ratón se ha posicionado sobre el componente sin
presionarlo.
mouseExited El ratón deja de estar posicionado sobre el componente sin
presionarlo.
mouseMoved Se mueve el ratón sobre el componente sin presionar
mousePressed Se ha presionado el ratón sobre el componente (aun sin
soltarlo).
mouseReleased Se ha soltado (después de presionarlo) el ratón sobre el
componente.
mouseWheelmoved Se mueve la rueda del ratón sobre el componente.
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.
7
Programación orientada a objetos II
Unidad 1. Eventos
esto ocasionaría que exista muy poco tiempo entre cada evento y no se desplegaría
correctamente cada acción asignada.
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjavax.swing.JButton;
importjavax.swing.JFrame;
/**
* @author ESAD
*/
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
8
Programación orientada a objetos II
Unidad 1. Eventos
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 (se
verá 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 éste
no realizará absolutamente nada, porque 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, la aplicación
que imprimirá el mensaje colocado.
A continuación, se enlistan los tipos de eventos del teclado y el momento en el que cada
uno de ellos se detecta y se activa.
9
Programación orientada a objetos II
Unidad 1. Eventos
Al igual que en el caso anterior no se recomienda utilizar varios eventos de teclado sobre
el mismo componente.
Ahora en el siguiente ejemplo verás cómo se utilizan estos eventos, observa la siguiente
clase:
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 {
10
Programación orientada a objetos II
Unidad 1. Eventos
frame.addWindowListener(new WindowAdapter() {
@Override
publicvoidwindowClosing(WindowEvent e){
System.exit(0);
}
});
}
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
(se verá este tema más a fondo en la siguiente unidad, por ahora lo importante es el evento).
-En sombreado naranja la adición del escuchador del teclado (addKeyListener) a la caja de
texto (llamada cajaTexto) que escuchará 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
11
Programación orientada a objetos II
Unidad 1. Eventos
En este ejemplo puedes observar que no solo se deben colocar las acciones a realizar
dentro de la estructura de manipulación del evento, sino 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 la aplicación
imprimirá el mensaje colocado.
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)
12
Programación orientada a objetos II
Unidad 1. Eventos
Para lo anterior, deberás tomar en cuenta (con base en 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, se te invita a
participar en la siguiente actividad para que pongas en práctica tus conocimientos.
Cierre de la Unidad
En el transcurso de esta unidad Eventos, observaste que por medio de ellos se identifica lo
que el usuario está realizando sobre una aplicación, y que 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.
13
Programación orientada a objetos II
Unidad 1. Eventos
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.
Se recomienda que instales NetBeans 7.0, como IDE, por su facilidad de uso, éste
puede ser descargado gratuitamente de la página oficial del IDE NetBean, editor:
NetBeanscommunity, ORACLE. Recuperado de 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
en los 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. Recuperado de
http://docs.oracle.com/javase/tutorial/uiswing/events/eventsandcomponents.html
Fuentes de consulta
14