EVENTOS
DEL RATÓN DESDE CÓDIGO:
Se estudió en el post anterior la forma de programar eventos desde
código. Concretamente se estudió como programar eventos de acción. En esta hoja
se estudiará como programar eventos de ratón.
Los eventos de ratón son los siguientes:
-
mouseEntered
o Indica que el puntero del ratón entró en la superficie del
elemento (etiqueta, botón, etc)
-
mouseExited
o Indica que el puntero del ratón salió de la superficie del
elemento (etiqueta, botón, etc)
-
mousePressed
o Indica que un botón del ratón ha sido presionado
sobre el elemento.
-
mouseReleased
o Indica que un botón del ratón ha sido soltado sobre
el elemento.
-
mouseClicked
o Indica que se ha pulsado y soltado un botón del
ratón.
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
ratón 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 parámetro con
información sobre el evento. Este parámetro, en el caso de los eventos del
ratón, es del tipo MouseEvent.
Cada evento a su vez hace una llamada a un método, y es en este
procedimiento donde realmente se programa la respuesta al evento.
Todo esto resulta complicado al principio, pero verás 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 parámetro que recibe cada evento.
COMO ENLAZAR EVENTOS DE
RATÓN CON UN COMPONENTE:
Supongamos que tenemos un componente (botón, etiqueta, etc...) llamado YYY.
Si queremos asociarle eventos de ratón, tendremos que añadir el
siguiente código dentro del método constructor:
YYY.addMouseListener(new MouseAdapter() {
public void
mouseEntered(MouseEvent evt) {
YYYMouseEntered(evt);
}
public void
mouseExited(MouseEvent evt) {
YYYMouseExited(evt);
}
public void
mousePressed(MouseEvent evt) {
YYYMousePressed(evt);
}
public void
mouseReleased(MouseEvent evt) {
YYYMouseReleased(evt);
}
public void
mouseClicked(MouseEvent evt) {
YYYMouseClicked(evt);
}
});
Veamos este mismo código comentado:
EJERCICIO:
- Crea un nuevo
proyecto en NetBeans.
- Accede al
código del proyecto.
- Inserta una
llamada dentro del método constructor a un método creacionVentana de la
siguiente forma:
- La ventana va a
contener dos etiquetas, que tendremos que declarar en la zona de variables
globales:
- Ahora vamos a
diseñar la ventana. Introduce el siguiente código dentro del procedimiento
creacionVentana:
- Ejecuta ya el
programa para observar el resultado de nuestro diseño. El aspecto debe ser
el siguiente:
- El objetivo del
programa es simple. Queremos que al entrar el puntero del ratón dentro de la
superficie de la etiqueta azul, aparezca un mensaje en la otra etiqueta
indicándolo. También queremos que aparezca un mensaje cuando sale el puntero del ratón de
la etiqueta. Y también al pulsar un botón del ratón sobre dicha etiqueta.
- 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 azul etiColor.
- Primero programaremos
el enlace del adaptador MouseAdapter
con la etiqueta etiColor.
Programa al final del método creacionVentana
lo siguiente:
- Observa el
código:
- Se añade un MouseAdapter
al objeto etiColor.
- El MouseAdapter
que se añade solo contiene los tres eventos que necesitamos: mouseEntered, mouseExited y mousePressed.
- Será necesario
añadir imports para
las clases MouseAdapter
y MouseEvent.
- Es normal que
las llamadas a los procedimientos de cada evento den error (subrayado con
líneas rojas) ya que todavía no han sido programados.
- Ahora se
programará cada procedimiento que es llamado desde cada evento. Recuerda
que esto debe hacerse fuera del método creacionVentana. Aquí tienes lo que debes programar:
- Ahora ya puedes
ejecutar el programa y comprobar lo que sucede cuando interactúas con el
ratón sobre la etiqueta de color azul.
- Vamos a añadir
una pequeña mejora que nos servirá para estudiar ese objeto llamado evt
del tipo MouseEvent que llevan todos los eventos de ratón como
parámetro.
Se dijo antes que este parámetro contiene
información sobre la acción del ratón. Por ejemplo, nos puede servir para saber
cuantas veces se pulsó el ratón, con qué botón, etc. Aprovecharemos este
parámetro para indicar qué botón del ratón es el que se ha pulsado sobre la
etiqueta.
Cambia el método etiColorMousePressed y déjalo de la siguiente forma:
- En el código
anterior aprovechamos los métodos que tiene el objeto evt para
averiguar que botón se ha pulsado. Usamos el método getButton que nos dice el botón pulsado. Aprovechamos
las constantes de la clase MouseEvent para saber si se
pulsó el botón izquierdo, central o derecho.
- Ejecuta el
programa y comprueba el funcionamiento.
CONCLUSIONES:
Hay grupos de eventos que pertenecen a un mismo
oyente o adaptador. Por ejemplo, los eventos de ratón pertenecen al adaptador
llamado MouseAdapter.
Si se quiere asignar eventos de ratón a un
componente YYY, hay que usar el siguiente código:
YYY.addMouseListener(new MouseAdapter() {
public
void mouseEntered(MouseEvent evt) {
YYYMouseEvent(evt);
}
...
otros eventos de ratón ...
});
Ten en cuenta que solo añades al adaptador aquellos
eventos que necesites.
Cada evento de ratón lleva como parámetro un objeto
evt del tipo MouseEvent que contiene información sobre el evento ocurrido (qué botón del
ratón se pulsó, cuantas veces, etc.).
No hay comentarios.:
Publicar un comentario