Voy a explicar cómo usar los
Menús Emegentes (JPopupMenu):
Empecemos
analizando el evento mouseClicked; el evento mouseClicked
es capaz de capturar un clic del ratón sobre un determinado elemento de la
ventana.
Este
evento recibe como parámetro un objeto del tipo MouseEvent, y gracias a
él se puede conseguir información como la siguiente:
-       
Cuál
botón del ratón fue pulsado.
-       
Cuantas
veces fue pulsado (clic, doble clic, etc)
-       
En cuáles
coordenadas fue pulsado el botón.
-       
Etc.
Se
puede usar esta información para saber por ejemplo si se pulsó el botón derecho
del ratón, y hacer que se muestre un menú contextual llamado también menú
emergente en pantalla.
En
el siguiente ejercicio estudiaremos las posibilidades del evento mouseClicked
y se aplicará a la creación y visualización de menús contextuales (o
emergentes)
- Crea un nuevo
     proyecto.
- Dentro
     de Source Package crea un Java Package y
     llamalo paqueteInicial.
- Dentro
     de paqueteInicial crea un JFrame Form y
     nombralo VentanaInicial
- No hace falta
     que añada nada a la VentanaInicial.
     
- Programaremos
     la pulsación del ratón sobre el formulario, así que haga clic derecho sobre
     el formulario e ingresa a programar en el evento mouseClicked.
- Observe el
     código del evento:
private void formMouseClicked(java.awt.event.MouseEvent evt)
{                                  
        // TODO add your handling code here:
}    
Este evento recibe como parámetro un objeto llamado evt del tipo MouseEvent (en rojo en el código)
que nos permite saber datos de las condiciones en que se hizo clic.
- Dentro del
     evento programe lo siguiente:
if (evt.getButton()
== 1) {
    JOptionPane.showMessageDialog(null, "Hizo Clic Izquierdo.");
} else if (evt.getButton()
== 2) {
} else if (evt.getButton()
== 3) {
    JOptionPane.showMessageDialog(null, "Hizo Clic Derecho.");
}
- Ejecuta el
     programa y haz clic sobre el formulario con el botón derecho, con el
     izquierdo y con el central. Observa el resultado.
- Ahora quizás
     puedas comprender el código anterior. En él, se usa el método getButton del objeto evt para saber qué botón se
     pulsó. El método getButton
     devuelve un entero que puede ser 1, 2 o 3 según el botón pulsado.
- Se puede
     aprovechar el método getButton
     para saber cuando se pulsa botón derecho del ratón y así mostrar un menú
     contextual. Pero antes, es necesario crear el menú.
- Agrega a tu
     formulario un objeto del tipo JPopupMenu.
     Estos objetos definen menús emergentes.
- Los objetos JPopupMenu
     no se muestran en el formulario, pero puedes verlo en el Inspector
     dentro de la rama de Otros Componentes:
- Aprovecharemos
     el inspector para cambiar el nombre al menú. Llámalo mnuEmergente.
- Los menús
     emergentes se crean igual que las opciones de menús normales, agregamos
     con el botón derecho del ratón objetos JMenuItem.
- Añada al menú
     emergente tres JMenuItem, y asígneles los siguientes nombres a cada
     uno: mnuRojo, mnuVerde, mnuAzul. El inspector debería tener el
     siguiente aspecto:
- Tienes que
     cambiar la propiedad text
     de cada opción del menú. Recuerda que esta propiedad define lo que aparece
     en el menú. Asignarás los siguientes textos: “Rojo”, “Verde” y “Azul”.
- El menú
     emergente ya está construido. Ahora tenemos que hacer que aparezca cuando
     el usuario pulse el botón derecho del ratón sobre el formulario. Para
     ello, entramos de nuevo en el evento mouseClicked del formulario y
     cambiaremos su código por el siguiente:
        if (evt.getButton() == 3) {
            mnuEmergente.show(this,
evt.getX(), evt.getY());
        }
- Explicación del
     código anterior:
-       
En
primer lugar verificamos que el botón pulsado a sido el derecho; esto sucede si
el método getButton() del objeto evt es igual a 3.
-       
El método
show le da la orden al mnuEmergente para que se muestre.
-       
El
método show requiere de tres argumentos: por un lado la ventana donde actúa (this).
-       
Por otro
lado la posición x donde debe mostrarse el menú. Esta posición es aquella donde
se pulsó el ratón, y se puede conseguir gracias al método getX del objeto evt.
-       
Por
último se necesita la posición y. Esta posición se puede conseguir
gracias al método getY del
objeto evt.
Es decir, decidimos mostrar el menú emergente justo en las coordenadas
donde se hizo clic.
- Ejecuta el proyecto
     y observa el resultado.
         Al hacer clic derecho se mostrará el
menú contextual.
- Para hacer que
     al pulsarse una opción suceda algo, solo hay que programar en el evento actionPerformed
     del JMenuItem correspondiente. Por ejemplo, active el actionPerformed del
     mnuRojo y dentro codifique lo siguiente:
this.getContentPane().setBackground(Color.red);
- Ejecuta el proyecto
     y comprueba lo que sucede al pulsar la opción Rojo del menú contextual.
CONCLUSIÓN:
Los menús contextuales son objetos
del tipo JPopupMenu. Estos objetos contienen JMenuItem al igual que las
opciones de menú normales.
Cuando se asigna un JPopupMenu a un
formulario, no aparece sobre la ventana, pero sí en el inspector.
Para hacer que aparezca el menú
emergente, es necesario programar el evento mouseClicked del objeto
sobre el que quiera que aparezca el menú.
Tendrá que usar el método show
del menú emergente para mostrar dicho menú indicando para ello el objeto donde
aparecerá con sus respectivas coordenadas X, Y.





 
No hay comentarios.:
Publicar un comentario