Home | Clases | Interfaces de usuario con Java Swing | Componentes JMenuBar, JMenu y JMenuItem

Componentes JMenuBar, JMenu y JMenuItem


JMenuBar, JMenu, JMenuItem

Para implementar un menú horizontal en la parte superior de un JFrame requerimos de un objeto de la clase JMenuBar, uno o más objetos de la clase JMenu y por último objetos de la clase JMenuItem.

Par la captura de eventos debemos implementar el interface ActionListener y asociarlo a los controles de tipo JMenuItem, de modo que se dispare al hacer clic en JMenuItem.

Ejemplo: Crear un menú de opciones que contenga el JMenu de la barra y dos objetos de la clase JMenu que dependan del primero. El primer JMenu debe mostrar dos JMenuItem que permitan modificar el tamaño del JFrame y el segundo también debe mostrar dos JMenuItem que permitan cambiar el color de fondo.

/* Importamos las componentes Swing, así como el paquete con los interfaces para los eventos */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/* La clase JFrame encapsula el concepto de una ventana, para implementar una aplicación que muestre una ventana debemos plantear una clase que herede de la clase JFrame e implemente a a ActionListener para el evento del botón*/
public class Formulario extends JFrame implements ActionListener{

/* Definimos variables. */
private JMenuBar menuBar;
private JMenu menu1, menu2, menu3;
private JMenuItem menuItem21, menuItem22, menuItem31, menuItem32;

/* En el constructor de la clase llamamos al método heredado de la clase JFrame llamado setLayout y le pasamos como parámetro un valor null, con esto estamos informándole a la clase JFrame que utilizaremos posicionamiento absoluto para los controles visuales dentro del JFrame*/
public Formulario() {

setLayout(null);

/* Creamos el JMenuBar y lo asociamos con el JFrame */
menuBar=new JMenuBar();
setJMenuBar(menuBar);

/* Creamos el primer JMenu y lo pasamos como parámetro al JMenuBar mediante el método add */
menu1=new JMenu("Opciones");
menuBar.add(menu1);

/* Creamos el segundo y tercer objetos de la clase JMenu y los asociamos con el primer JMenu creado */
menu2=new JMenu("Tamaño de la ventana");
menu1.add(menu2);
menu3=new JMenu("Color de fondo");
menu1.add(menu3);

/* Creamos los dos primeros objetos de la clase JMenuItem y los asociamos con el segundo JMenu */
menuItem21=new JMenuItem("640*480");
menu2.add(menuItem21);
menuItem21.addActionListener(this);
menuItem22=new JMenuItem("1024*768");
menu2.add(menuItem22);
menuItem22.addActionListener(this);

/* Creamos los otros dos objetos de la clase JMenuItem y los asociamos con el tercer JMenu */
menuItem31=new JMenuItem("Rojo");
menu3.add(menuItem31);
menuItem31.addActionListener(this);
menuItem32=new JMenuItem("Verde");
menu3.add(menuItem32);
menuItem32.addActionListener(this);
}

/* Método que implementa las acciones de cada ítem de menú */
public void actionPerformed(ActionEvent e) {
if (e.getSource()==menuItem21) {
setSize(640,480);
}
if (e.getSource()==menuItem22) {
setSize(1024,768);
}
if (e.getSource()==menuItem31) {
getContentPane().setBackground(new Color(255,0,0));
}
if (e.getSource()==menuItem32) {
getContentPane().setBackground(new Color(0,255,0));
}
}

/* En el método main creamos un objeto de la clase Formulario, llamamos al método setBounds para ubicar y dar tamaño al control y mediante el método setVisible hacemos visible el JFrame */
public static void main(String[] args) {

Formulario formulario1=new Formulario();
formulario1.setBounds(0,0,300,200);
formulario1.setVisible(true);

}

}


Ejercicios propuestos:

6. Crear 2 JTextField que permitan introducir dos números entre 100 y 1000. Crear un menú que contenga una opción para redimensionar el JFrame con los valores introducidos por teclado. Añadir otra opción al menú que finalice el programa.


Fuente: Diego Moisset. tutorialesprogramacionya.com

Fecha de publicación: 18/09/2020
Asignaturas: desarrollo de interfaces
Temas: interfaces usuario usabilidad
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos