Comme on a déjà utilisé des JCheckbox et des JRadioButton dans le TD précédent, vous ne devriez avoir aucune difficulté
pour manipuler leur équivalent en éléments de menu.
Ajoutez 2 cases à cochées de menu (JCheckBoxMenuItem) réparties dans deux menus de votre choix. La première sera
non sélectionnée par défaut, alors que cela sera l’inverse pour la seconde.
Ajoutez un groupe de 3 boutons radio de menu (JRadioButtonMenuItem). Il s’agira de permettre la sélection d’un radio
bouton parmi 3.
A savoir :
Les cases à cocher et les boutons radio des menus se comportent comme leur homologue de la partie
classique de l’interface.
3.7 Les sous-menus
Dans le cas où un menu comporte trop d’éléments, il n’existe que trois possibilités.
1. Utilisez des séparateurs pour créer visuellement des groupes ce qui va aider l’utilisateur à se repérer. Mais cela a
quand même des limites. On ne peut pas avoir trop de groupes, ni faire des groupes sans cohérence.
2. Créez un nouveau menu et y répartir les éléments trop nombreux. Cependant, il ne faut pas que cela désorganise
les menus. Les menus doivent toujours contenir les éléments de manière logique en fonction de leur objectif et en
cohérence avec leur nom. Un menu « fichier » sera destiné à contenir les fonctions sur les fichiers (création,
sauvegarde, ouverture, …).
3. Créez un sous menu dans le menu et y regrouper les éléments d’un même « thème ».
La création d’un sous-menu fonctionne exactement comme la création d’un menu. A la différence près, qu’on ajoute le
sous-menu dans un menu (ou un autre sous-menu) au lieu de l’ajouter directement dans la barre de menu.
Créez 2 sous-menus. Le premier comportera 3 items (dont un sous-menu) et sera dans un menu de niveau 1. Le second
sera contenu dans le premier et contiendra 2 autres items.
A savoir :
Les menus peuvent se décomposer en sous-menus. Il sera essentiel de veillez à faire cela dès qu’un
menu atteindra une taille de plus de 9 éléments.
3.8 Evènements et menus
Maintenant qu’on sait concevoir des menus, il est important de savoir réagir à l’action d’un utilisateur à un menu. Pour
cela rien de très différents de ce que nous avons vu en cours ou lors de la dernière partie du TD précédent. Il suffit d’ajouter
un écouteur (listener) du bon type pour écouter l’évènement qui nous intéresse.
Les éléments de menus étant des sous types d’ « AbstractButton », ceux-ci se comportent comme des boutons. Donc, pour
les éléments de type JMenuItem et JRadioButtonMenuItem, l’écouteur est de type ActionListener et pour les
JCheckBoxMenuItem il est de type ItemListener.
Ajoutez un champ texte à votre fenêtre.
Ajoutez sur chaque élément de menu votre un écouteur d’évènements (du bon type)
Faites-en sorte que votre classe maFenetre implémente les bonnes interfaces. Le code de chaque méthode de callback
se limitera à afficher un message dans votre champs texte : « action sur ‘LabelMenu’». Pour tester le type de l’instance
de votre source, vous pouvez utiliser le code suivant :
if (e.getSource() instanceof JMenuItem){…}