package jmenubar;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Arrays;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextArea;
public class Ejercicio1 {
public static void main(String[] args) {
// Crear y configurar el marco principal de la aplicación
MarcoMenu miMarco = new MarcoMenu();
miMarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
miMarco.setVisible(true);
}
}
class MarcoMenu extends JFrame {
public MarcoMenu() {
// Configuración de la ventana principal
setBounds(0, 0, 500, 500);
setTitle("Menu");
setResizable(false);
setLocationRelativeTo(null);
// Añadir el panel principal al marco
LaminaMenu miLamina = new LaminaMenu();
add(miLamina);
}
}
class LaminaMenu extends JPanel {
public LaminaMenu() {
setLayout(new BorderLayout());
// Crear el área de texto principal
JTextArea areaTexto = new JTextArea(10, 10);
add(areaTexto, BorderLayout.CENTER);
// Crear la barra de menú
JMenuBar barraMenu = new JMenuBar();
// Crear el menú "Archivo" con sus elementos
JMenu menuArchivo = new JMenu("Archivo");
JMenuItem nuevo = new JMenuItem("Nuevo");
JMenuItem abrir = new JMenuItem("Abrir");
JMenuItem guardar = new JMenuItem("Guardar");
JMenuItem salir = new JMenuItem("Salir");
// Agregar los elementos del menú "Archivo" a una lista
ArrayList<JMenuItem> listaArchivo = new ArrayList<JMenuItem>(Arrays.asList(nuevo, abrir, guardar, salir));
// Crear el menú "Editar" con sus elementos
JMenu menuEditar = new JMenu("Editar");
JCheckBoxMenuItem activar = new JCheckBoxMenuItem("Activar edición");
// Crear un grupo de botones para los JRadioButtonMenuItem
ButtonGroup grupoRadios = new ButtonGroup();
JRadioButtonMenuItem lectura = new JRadioButtonMenuItem("Lectura");
JRadioButtonMenuItem escritura = new JRadioButtonMenuItem("Escritura");
grupoRadios.add(lectura);
grupoRadios.add(escritura);
menuEditar.add(activar);
menuEditar.add(lectura);
menuEditar.add(escritura);
// Agregar los elementos al menú "Archivo" y configurar sus ActionListeners
for (JMenuItem jmenu : listaArchivo) {
menuArchivo.add(jmenu);
jmenu.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mensaje(jmenu.getText(), areaTexto);
}
});
}
// Configurar los ActionListeners para los elementos del menú "Editar"
activar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (activar.isSelected()) {
areaTexto.setText("Checkbox activar marcado");
} else {
areaTexto.setText("Checkbox activar desmarcado");
}
}
});
lectura.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
areaTexto.setText("RadioButton lectura marcado");
}
});
escritura.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
areaTexto.setText("RadioButton escritura marcado");
}
});
// Agregar los menús a la barra de menú
barraMenu.add(menuArchivo);
barraMenu.add(menuEditar);
// Crear el JPopupMenu con sus elementos
JPopupMenu menuPopup = new JPopupMenu();
JMenuItem copiar = new JMenuItem("Copiar");
JMenuItem pegar = new JMenuItem("Pegar");
JMenuItem cortar = new JMenuItem("Cortar");
// Agregar los elementos del JPopupMenu a una lista
ArrayList<JMenuItem> listaPopup = new ArrayList<JMenuItem>(Arrays.asList(copiar, pegar, cortar));
// Agregar los elementos al JPopupMenu y configurar sus ActionListeners
for (JMenuItem pop : listaPopup) {
menuPopup.add(pop);
pop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mensaje(pop.getText(), areaTexto);
}
});
}
// Agregar un MouseListener al área de texto para mostrar el popup
areaTexto.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger()) {
menuPopup.show(e.getComponent(), e.getX(), e.getY());
}
}
@Override
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
menuPopup.show(e.getComponent(), e.getX(), e.getY());
}
}
});
// Agregar la barra de menú al panel
add(barraMenu, BorderLayout.NORTH);
}
// Método para mostrar un mensaje en el área de texto
private void mensaje(String texto, JTextArea area) {
area.setText("La opción seleccionada es: " + texto);
}
}