JMenu : Création des menus avec Java

1 – La barre des menus JMenuBar Java

Afin d’organiser les menus, Java est doté d’une barre susceptible d’être placée en haut de la fenêtre, permettant d’accueillir et organiser les menus Java. Pour cela le langage Java utilise une classe nommée JMenuBar est utilisée pour afficher la barre des menus dans la fenêtre JFrame.
Pour créer une barre de menu, il suffit de créer une fenêtre dotée d’un panneau ( JPanel), d’instancier la classe JMenuBar, et d’ajouter ensuite la barre de menu au JPanel.

a) Création d’une fenêtre dotée d’un JPanel

JFrame fen=new JFrame("Exemple de fenêtre avec menu"); 
JPanel panel=new JPanel(); 
panel.setLayout(null); 
fen.setSize(500, 400); 
fen.setContentPane(panel);

b. Création de la barre des menus avec la classe JMenuBar

//création de la barre des menus
JMenuBar myMenuBar=new JMenuBar();
//Ajout de la barre de menus au JPanel
panel.add(myMenuBar)

2- La classe JMenu

La classe JMenu permet via l’instanciation, de créer un menu. Nous allons à titre d’exemple l’utiliser pour créer un menu Fichier :

//Création du menu Fichier
JMenu menuFichier = new JMenu("Fichier");
//Ajout du menu à la barre des menus 
myMenuBar.add(menuFichier);

Code Complet

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;

public class MyJMenu {

	public static void main(String[] args) {
		
			//création d'une fenêtre JFrame
			JFrame fen=new JFrame("Exemple de fenêtre avec menu");
			JPanel panel=new JPanel();
			//création d'un panneau (JPanel)
			panel.setLayout(null);
			fen.setSize(500, 400);
			fen.setContentPane(panel);
			
			//création de la barre des menus
			JMenuBar myMenuBar=new JMenuBar();

			//Ajout de la barre de menus au JPanel
			panel.add(myMenuBar);
			
			//Positionnement de la barre des menus avec la m"thode setBounds()
			myMenuBar.setBounds(0, 0, 500, 30);
			//Création du menu Fichier
			JMenu menuFichier = new JMenu("Fichier");

			//Ajout du menu à la barre des menus
			myMenuBar.add(menuFichier);
			fen.setVisible(true);
		}
	}

Voici un aperçu après exécution du code sur Eclipse

3 – Création des sous menus avec la classe JMenuItem

Pour créer un sous menu et l’ajouter à menu principal, il suffit d’instancier la classe JMenuItem et appliquer la méthode add(). La classe JMenuItem premet de créer des sous menus, ces sous menus peuvent être ajoutés au menu principal grâce à la méthode add(). Nous allons traiter un exemple simple qui permet d’insérer le menu “Nouveau” au menu principal “Fichier” :

//Ajout d'un sous menu "Nouveau"                      
JMenuItem menuNouveau = new JMenuItem("Nouveau");
//Ajout du sous menu "Nouveau" au menu principal Fichier                        
menuFichier.add(menuNouveau);

On peut également via la même méthode, ajouter d’autres sous menus : “Ouvrir”  “Enregistrer”  “Imprimer”  “Quitter” 

Exemple

//Création des sous menus                     
			JMenuItem menuNouveau = new JMenuItem("Nouveau"); 
			JMenuItem menuOuvrir = new JMenuItem("Ouvrir"); 
			JMenuItem menuEnregistrer = new JMenuItem("Enregistrer");
			JMenuItem menuImprimer = new JMenuItem("Imprimer"); 
			JMenuItem menuQuitter = new JMenuItem("Quitter"); 
			
			//Ajout des sous menus au menu principal Fichier 
			menuFichier.add(menuNouveau);
			menuFichier.add(menuOuvrir);
			menuFichier.add(menuEnregistrer);
			menuFichier.add(menuImprimer);
			menuFichier.add(menuQuitter);

Voici un aperçu de la fenêtre obtenue après exécution du code sur Eclipse

4 – Ajouter une action à un sous menu

Dans le paragraphe précédent, vous avez apris à créer des menus et des sous menus, et rien d’autre ! Mais quand vous cliquez  sur l’un de ces sous menus, il doit se produire une action ou un évenement : exemple nous allons voir comment associer l’action qui permet de fermer la fenêtre au sous menu “Quitter”.  Por cela nous allons utiliser la même méthode   addActionListener( )  que nous avons appliqué aux boutons de comandes, et au sein de cette dernière, nous devons appliquer la méthode dispose( )  pour fermer la fenêtre :

menuQuitter.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					fen.dispose();
				}
			});