Está en la página 1de 6

Curso de Java Bsico

EJERCICIO GUIADO. JAVA: EVENTOS DESDE CDIGO. EVENTOS DE RATN

Eventos desde cdigo


Se estudi en la hoja de teora anterior la forma de programar eventos desde cdigo. Concretamente se estudi como programar eventos de accin. En esta hoja se estudiar como programar eventos de ratn. Los eventos de ratn son los siguientes: mouseEntered o Indica que el ratn entr en la superficie del elemento (etiqueta, botn, etc) mouseExited o Indica que el ratn sali de la superficie del elemento (etiqueta, botn, etc) mousePressed o Indica que un botn del ratn ha sido presionado sobre el elemento. mouseReleased o Indica que un botn del ratn ha sido soltado sobre el elemento. mouseClicked o Indica que se ha pulsado/soltado un botn del ratn.

Como se dijo en la hoja anterior, todos los eventos pertenecen a un objeto oyente o adaptador. En este caso concreto, todos los eventos del ratn pertenecen a un objeto adaptador llamado MouseAdapter. Cada uno de los eventos se programar dentro del adaptador MouseAdapter. Cada evento es en realidad un procedimiento que recibe un parmetro con informacin sobre el evento. Este parmetro, en el caso de los eventos del ratn, es del tipo MouseEvent. Cada evento a su vez hace una llamada a un procedimiento, y es en este procedimiento donde realmente se programa la respuesta al evento. Todo esto resulta complicado al principio, pero vers que en realidad siempre es igual. Solo hay que conocer el nombre de cada evento, el adaptador u oyente al que pertenece y el tipo de parmetro que recibe cada evento.

http://procesinc.com/

Curso de Java Bsico

Como enlazar eventos de ratn con un componente Supongamos que tenemos un componente (botn, etiqueta, etc...) llamado XXX. Si queremos asociarle eventos de ratn, tendremos que aadir el siguiente cdigo dentro del constructor:
XXX.addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent evt) { XXXMouseEntered(evt); } public void mouseExited(MouseEvent evt) { XXXMouseExited(evt); } public void mousePressed(MouseEvent evt) { XXXMousePressed(evt); } public void mouseReleased(MouseEvent evt) { XXXMouseReleased(evt); } public void mouseClicked(MouseEvent evt) { XXXMouseClicked(evt); } });

Veamos este mismo cdigo comentado:


Para asignar el adaptador al elemento XXX se usa el mtodo addMouseListener XXX.addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent evt) { XXXMouseEntered(evt); } public void mouseExited(MouseEvent evt) { XXXMouseExited(evt); } public void mousePressed(MouseEvent evt) { XXXMousePressed(evt); } public void mouseReleased(MouseEvent evt) { XXXMouseReleased(evt); } public void mouseClicked(MouseEvent evt) { XXXMouseClicked(evt); } }); Cada evento hace una llamada a un procedimiento, cuyo nombre puede ser cualquiera, aunque suele construirse uniendo el nombre del componente XXX junto con el nombre del evento. Es luego en estos procedimientos donde se programa la respuesta a cada evento. Cada evento recibe como parmetro un objeto del tipo MouseEvent al que por convencin se le suele llamar evt. Este objeto suele contener informacin sobre la pulsacin del ratn (qu botn se ha pulsado, cuantas veces, etc...) Estos son los eventos de ratn que pertenecen al adaptador MouseAdapter. En realidad no hay que ponerlos todos, solo hay que aadir los que necesites. Los eventos de ratn pertenecen al adaptador llamado MouseAdapter

http://procesinc.com/

Curso de Java Bsico

EJERCICIO GUIADO 1. Crea un nuevo proyecto. 2. Accede al cdigo del proyecto.

3. Inserta una llamada dentro del constructor a un procedimiento CreacionVentana de la siguiente forma:
La llamada...

Y el procedimiento.

4. La ventana va a contener dos etiquetas, que tendremos que declarar en la zona de variables globales:

5. Ahora vamos a disear la ventana. Introduce el siguiente cdigo dentro del procedimiento CreacionVentana:

Detalles de la ventana

Se disea la primera etiqueta

Se disea la segunda etiqueta

http://procesinc.com/

Curso de Java Bsico

6. Ejecuta ya el programa para observar el resultado de nuestro diseo. El aspecto debe ser el siguiente:

7. El objetivo del programa es simple. Queremos que al entrar el ratn dentro de la superficie de la etiqueta roja, aparezca un mensaje en la otra etiqueta indicndolo. Tambin queremos que aparezca un mensaje al salir el ratn de la etiqueta. Y tambin al pulsar un botn del ratn sobre la etiqueta. 8. Para hacer esto, necesitamos crear un MouseAdapter que contenga los siguientes eventos: mouseEntered, mouseExited y mousePressed. Observa que no es necesario que contenga el mouseReleased ni el mouseClicked. Luego, el MouseAdapter se asignar a la etiqueta roja etiZona. 9. Primero programaremos el enlace del adaptador MouseAdapter con la etiqueta etiZona. Programa al final del mtodo CreacionVentana lo siguiente:

http://procesinc.com/

Curso de Java Bsico

10. Observa el cdigo: a. Se aade un MouseAdapter al objeto etiZona. b. El MouseAdapter que se aade solo contiene los tres eventos que necesitamos: mouseEntered, mouseExited y mousePressed. c. Ser necesario aadir imports para las clases MouseAdapter y MouseEvent. d. Es normal que las llamadas a los procedimientos de cada evento den error ya que todava no han sido programadas. 11. Ahora se programar cada procedimiento que es llamado desde cada evento. Recuerda que esto debe hacerse fuera del mtodo CreacinVentana. Aqu tienes lo que debes programar:
(Llave del mtodo CreacionVentana)

Debes programar este cdigo

12. Ahora ya puedes ejecutar el programa y comprobar lo que sucede cuando interactas con el ratn sobre la etiqueta de color rojo.

http://procesinc.com/

Curso de Java Bsico 13. Vamos a aadir una pequea mejora que nos servir para estudiar ese objeto llamado evt del tipo MouseEvent que llevan todos los eventos de ratn como parmetro. Se dijo antes que este parmetro contiene informacin sobre la accin del ratn. Por ejemplo, nos puede servir para saber cuantas veces se puls el ratn, con qu botn, etc. Aprovecharemos este parmetro para indicar qu botn del ratn es el que se ha pulsado sobre la etiqueta. Cambia el procedimiento etiZonaMousePressed y djalo de la siguiente forma:

14. En el cdigo anterior aprovechamos los mtodos que tiene el objeto MouseEvent para averiguar que botn se ha pulsado. Usamos el mtodo getButton que nos dice el botn pulsado. Aprovechamos las constantes de la clase MouseEvent para saber si se puls el botn izquierdo, central o derecho. 15. Ejecuta el programa y comprueba el funcionamiento.

CONCLUSIN Hay grupos de eventos que pertenecen a un mismo oyente o adaptador. Por ejemplo, los eventos de ratn pertenecen al adaptador llamado MouseAdapter. Si se quiere asignar eventos de ratn a un componente XXX, hay que usar el siguiente cdigo: XXX.addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent evt) { XXXMouseEvent(evt); } ... otros eventos de ratn... }); Ten en cuenta que solo aades al adaptador aquellos eventos que necesites. Cada evento de ratn lleva como parmetro un objeto evt del tipo MouseEvent que contiene informacin sobre el evento: qu botn del ratn se puls, cuantas veces, etc.

http://procesinc.com/

También podría gustarte