Hola a todos. Los menús emergentes o menús
secundarios, son estos menús que aparecen al pulsar sobre el botón derecho
del ratón sobre un botón, un área de texto, un menú…
Para crear los menús emergentes utilizamos la
clase JPopupMenu que tiene varios métodos el que vamos a
utilizar nosotros es setComponentPopupMenu(Component c). El
parámetro component se refiere al objeto donde hacemos clic
para que aparezca el menú emergente.
Como siempre, para verlo más claro lo vamos a hacer
mediante una práctica cuyo código inicial es el siguiente:
package swing;
import java.awt.Font;
import javax.swing.*;
public class MenuEmergente
{
public static void main(String[] args) {
MarcoEmergente mimarco = new MarcoEmergente();
mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MarcoEmergente extends JFrame
{
public MarcoEmergente(){
setVisible(true);
setBounds(550,
300, 550, 400);
LaminaEmergente milamina = new LaminaEmergente();
add(milamina);
}
}
class LaminaEmergente extends JPanel
{
public LaminaEmergente()
{
}
}
Es un código que no hace falta explicación ya lo que
hemos visto en reiteradas ocasiones. Nos situamos dentro del constructor de la
lámina y lo primero que vamos a hacer es instanciar la clase JPopupMenu:
public LaminaEmergente()
{
JPopupMenu emergente = new JPopupMenu();
}
Con esto ya hemos creado el menú emergente, lo que
pasa que está vacio, tenemos que agregar los ítems que queremos que aparezca en
el menú secundario.
Agregamos los ítems:
public LaminaEmergente()
{
JPopupMenu emergente = new JPopupMenu();
JMenuItem opcion1 = new JMenuItem("Opción
1");
emergente.add(opcion1);
}
Tenemos que indicarle donde va a aparecer el menú
secundario y esto se hace con setComponentPopupMenu, en esta
ocasión es fácil porque va a aparercer el menú s al hacer clic con el botón
derecho del ratón sobre la lámina:
public LaminaEmergente()
{
JPopupMenu emergente = new JPopupMenu();
JMenuItem opcion1 = new JMenuItem("Opción
1");
emergente.add(opcion1);
setComponentPopupMenu(emergente);
}
Añadimos unos cuantos más ítems para que no aparezca
el menú emergente tan pobre:
public LaminaEmergente()
{
JPopupMenu emergente = new JPopupMenu();
JMenuItem opcion1 = new JMenuItem("Opción
1");
JMenuItem opcion2 = new JMenuItem("Opción
2");
JMenuItem opcion3 = new JMenuItem("Opción
3");
emergente.add(opcion1);
emergente.add(opcion2);
emergente.add(opcion3);
setComponentPopupMenu(emergente);
}
Probamos:
Vemos que en cualquier parte de la lámina que hagamos
clic con el botón derecho nos aparece el menú emergente.
Sin embargo, este ejemplo es muy sencillo, de normal
en cualquier aplicación gráfica cuando se hace clic con el botón derecho del
ratón el menú emergente que aparece no es el mismo cuando se hace sobre un
botón, sobre un área de texto, sobre un menú… y es ahí cuando se complica.
Vamos a añadir unas líneas de código a nuestra
práctica para crear un menú, como esto ya lo hemos visto en apartado anteriores
no se va a explicar, es el siguiente:
public LaminaEmergente()
{
setLayout(new BorderLayout());
JPanel laminamenu=new JPanel();
JMenuBar barra = new JMenuBar();
JMenu archivo = new JMenu("Archivo");
JMenu edicion = new JMenu("Edicion");
JMenu formato = new JMenu("Formato");
barra.add(archivo);
barra.add(edicion);
barra.add(formato);
laminamenu.add(barra);
add(laminamenu, BorderLayout.NORTH);
JTextPane area = new JTextPane();
add(area, BorderLayout.CENTER);
//---------------Menú Emergente--------------
JPopupMenu emergente = new JPopupMenu();
JMenuItem opcion1 = new JMenuItem("Opción
1");
JMenuItem opcion2 = new JMenuItem("Opción
2");
JMenuItem opcion3 = new JMenuItem("Opción
3");
emergente.add(opcion1);
emergente.add(opcion2);
emergente.add(opcion3);
setComponentPopupMenu(emergente);
}
Se ha añadido una barra de menús, unos menús y un área de texto, si probamos:
Ahora si pulsamos con el botón secundario del ratón
sobre el área de texto ya no aparece el menú emergente ya que la lámina ha sido
tapada por el área, para indicarle que tiene que aparecer el menú emergente
cuando hagamos clic con el botón secundario del ratón en cualquier parte del
área se lo hemos de indicar de la siguiente manera, modificando la línea de código:
area.setComponentPopupMenu(emergente);
Probamos la aplicación y hacemos clic con el botón secundario del ratón en cualquier parte del área de texto vemos que aparece el menú emergente:
Con esto ya estaría finalizado. Os espero en el
próximo, hasta pronto!
7.13 MENÚ CON RADIOBUTTON << >> 7.15ATAJOS DE TECLADO
No hay comentarios:
Publicar un comentario