Componentes avanzados: JMenuBar, JMenu y JMenuItem

JMenuBar, es la barra de menu tipica de cualquier programa que hayamos usado como por ejemplo el microsoft Word:
Una Barra de Menu contiene 3 elementos:
  1. JMenuBar: es la barra propiamente dicha donde se apoyan las 2 siguientes.
  2. JMenu: es la palabra que vemos sobre el JMenuBar y haciendo click sobre el se despliega una caja que contiene los items del menu
  3. JMenuItem: Cada uno de los items que se despliegan desde el JMenu
Gráficamente desde la vista del programa utorrent:
  • JMenuBar es la zona roja.
  • JMenu es cada uno de la palabras que vemos, en este caso Archivo, Opciones y Ayuda.
  • JMenuItem es cada uno de la sub-opciones de Archivo, como Agregar Torrent, Add Torrent(choose save dir), Agregar Torrent desde URL, Agregar Feed RSS, Agregar Dispositivo, Crear nuevo Torrent y Salir.
De manera jerarquica, este menu se ve:


Clase JMenuBar

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JMenuBar

Único Constructor:

  • JMenuBar()
    • Constructor sin parámetros, crea la barra de menu.

Métodos:

  • add(JMenu c)
    • Agrega el JMenu dado al final de la barra.

Clase JMenu

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.AbstractButton
javax.swing.JMenuItem
javax.swing.JMenu
Al parecer nuestro "menu" es clase hija de menuItem pero para nosotros el orden es este..

Constructores:

  • JMenu()
    • Crea un menu sin texto.
  • JMenuItem(String text)
    • Crea un menu con el texto del parámetro.
  • JMenuItem(String text, boolean b)
    • Crea un menu con un texto y se especifica como un menú de corte o no.

Métodos:

  • add(JMenuItem menuItem)
    • Agrega al menu el JMenuItem del paramétro.
  • add(String text)
    • Crea y agrega al menu un JMenuItem que ingresamos como texto.
  • addSeparator()
    • Agrega un separador al final del menu, como un item mas.

Clase JMenuItem

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.AbstractButton
javax.swing.JMenuItem

Constructores:

Podemos crear items de menu con texto, icono, combinación de ambas o d ninguno.
  • JMenuItem()
    • Crea un item de menu sin nada.
  • JMenuItem(Icon icon)
    • Crea un item de menu con el icono dado.
  • JMenuItem(String text)
    • Crea un item de menu con el texto del parámetro.
  • JMenuItem(String text, Icon icon)
    • Crea un item de menu con un texto y un icono.

Métodos:

Contamos con varios métodos, muchos que informan a los listeners de eventos producidos, vale la pena revisarlos, con el fin de ir tomando conocimiento tenemos.
  • setEnabled(boolean b)
    • De ser false no permite seleccionar el item, por ejemplo "desahacer" o "pegar" sin tener cambios o nada en el portapapeles.

Un ejemplo con código:
  1. import javax.swing.*;
  2. public class Menu {
  3.     static JFrame marco = new JFrame(); //La ventana
  4.     static JMenuBar barra = new JMenuBar(); //La Barra de menu
  5.     static JMenu menu1 = new JMenu("Archivo", false); //el menu archivo
  6.     static JMenu menu2 = new JMenu("Editar", true); //el menu editar
  7.     static JMenuItem item1 = new JMenuItem("Hola"); //un item para el menu archivo
  8.     static JMenuItem item2 = new JMenuItem("vacio"); //otro para editar
  9.    
  10.     public static void main(String[] Dar10){
  11.         //configuracion de la ventana
  12.         marco.setTitle("BARRA DE MENU");
  13.         marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  14.         marco.setLocationRelativeTo(null);
  15.         marco.setSize(250, 100);
  16.         marco.setLayout(null);
  17.        
  18.         menu1.add(item1);
  19.         menu1.addSeparator(); //agrega un separador
  20.         menu1.add("Chau"); //crea un item con el string
  21.         barra.add(menu1);
  22.        
  23.         item2.setEnabled(false); //deshabilita este item
  24.         menu2.add(item2);
  25.         barra.add(menu2);
  26.        
  27.         barra.setBounds(5, 5, 230, 12); //configuracion de la posicion y tamaño
  28.         marco.add(barra);
  29.        
  30.         marco.setVisible(true);
  31.     }
  32. }
El resultado en pantalla:

1 comentario:

  1. Excelente artículo, de mucha utilidad y fácilmente entendible. ¡Muchísimas gracias!

    ResponderEliminar