Les menus



Les menus comme les boutons, servent à activer différents traitements d'un logiciel. Lorsque le nombre de traitements est important, l'utilisation d'un bouton pour chaque traitement prend trop de place. Dans ce cas, il est préférable d'utiliser des menus. Ce sont en quelque sorte des boutons organisés en listes déroulantes, qui ne se déploient que lorsque l'on clique dessus.

Les menus sont organisés en trois niveaux: une barre de menu contient différents menu et chaque menu contient plusieurs entrées de menu. Pour fixer les idées, voici par exemple le menu Run de NetBeans déployé.

Menus-De-NetBeans-Avec-Libelles.jpg, 136kB

Sous Swing, les barres de menus sont représentées par la classe JMenuBar, les menus, par la classe JMenu et les entrées de menu, par la classe JMenuItem.

Les entrées de menu peuvent être associées à des raccourcis clavier. Un raccourci clavier permet de déclencher l'action associée à une entrée de menu en appuyant sur une (ou plusieurs) touche(s) du clavier. Le raccourci clavier est souvent indiqué à coté de l'entrée de menu. Dans l'exemple, ci-dessus la touche F6 combinée avec la touche majuscule active l'action associée à l'entrée Run File.

Il existe également des entrées de menu cochables servant à activer ou désactiver certaines fonctionnalités d'un logiciel. Voici celles du menu View de Netbeans:

Entree-Menu-Cochable-Avec-Libelle.jpg, 110kB

Sous Swing, les entrées de menu cochables sont représentées par la classe JCheckBoxMenuItem.

Sélection dans la palette

Menus-Ds-Palette.jpg, 86kB


Coté design

Gestionnaire d'évènement

La sélection d'une entrée de menu génère un évènement de type ActionPerformed. Pour générer le gestionnaire d'évènement dans le code source, faites un double clic sur l'entrée de menu correspondante.

Notez que si vous avez défini un raccourci clavier pour une entrée de menu, le gestionnaire d'évènement que vous avez défini sera également exécuté lorsque l'utilisateur utilisera ce raccourci.

Méthodes utiles

Exemple

L'exemple présenté ici se trouve dans le dossier Exemple-Swing/Menu. Il s'agit d'une nouvelle version de l'éditeur de texte vu dans la partie du cours consacrée aux barres d'outils. Dans cette nouvelle version du projet, une barre de menu s'ajoute à la barre d'outils. Les fonctionnalités du projet sont donc les mêmes, sauf qu'il y a à présent plus de manières de les activer.

Notez que cet exemple n'utilise pas les entrées de menu cochables. Par contre, nous en verrons une utilisation dans la partie gestion de fenêtres (cf utilisation du menu Voir dans l'exemple illustrant le multi-fenetrage).

Fenêtre du projet
Editeur-Avec-Menu.jpg, 15kB

La barre d'outils contient un seul menu avec deux entrées. La première permet d'ouvrir un fichier (raccourci de clavier Ctrl+O) et la seconde d'enregistrer un fichier (raccourci de clavier Ctrl+E).

Extraits de code

Le code n'est pas très différent de celui de la version précédente, mis à part que pour éviter de dupliquer le code, l'ouverture et l'enregistrement de fichier sont à présent réalisées par deux procédures non évènementielles (Ouvrir_Le_Fichier et Enregistrer_Le_Fichier) qui sont appelées dans les gestionnaires d'évènements des boutons de la barre d'outils ou des entrées du menu.