Bonjour,
Je vous propose un nouvel élément à utiliser : JMenu : ActionListener unique pour toutes les items d'un menu, et lance le traitement voulu pour chacune.
Après plusieurs recherches et échanges, je n'ai pas trouvé une manière efficace pour gérer les déclenchements sur une JMenuItem de manière concise.
En effet, on conseille de faire pour chaque item, un ActionListener spécifique à cette item, qui fera le traitement voulu.
L’inconvénient est que le code se répète, presque identique pour chaque JMenuItem, et cela devient lourd et difficilement lisible pour moi...
C'est le cas du premier menu de ma source, le menu "fichier", pas élégant et peu engageant à décoder.
Après du temps et des essais, j'ai préféré utiliser le membre natif "name", de chaque JMenuItem, pour identifier de manière unique chaque item.
Après déclenchement par un clic sur une JMenuItem, je recherche l'objet source du déclenchement, je le caste en JMenuItem, et je peux en lire la valeur du membre "name" :
L'item est identifié et on peut démarrer le traitement spécifique voulu sur cette item.
Code : Sélectionner tout - Visualiser dans une fenêtre à part String nom = ((JMenuItem) e.getSource()).getName();
C'est le cas du menu "Edition" de la source proposée.
L'avantage est que le "ActionListener" est le même pour toutes les items du menu et pourtant, le lancement de l'action reste spécifique à l'item cliquée.
Autre approche possible non fournie ici : on peut identifier la JMenuItem, à l'aide d'un entier.
Pour cela je vois deux solutions :
1/ On analyse la chaine du membre "name" et on l’interprète comme un integer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String i = ((JMenuItem) e.getSource()).getName(); int k = Integer.parseInt (i);
2/ on crée sa propre classe MesJMenuItem par exemple, qui étendent les JMenuItem natives, et on leur ajoute un membre : int numItem = 12, par exemple, et on détecte alors ce membre dans le ActionListener unique pour lancer les traitements spécifiques.
Voila, n'ayant pas trouvé cela clairement, je vous propose ces idées, car pour moi, je trouve qu'un ActionListener unique pour toutes les JMenusItems, est plus clair et allège mes menus.
N'hésitez pas à me donner vos avis, même s'ils sont critiques bien sur!....
Qu'en pensez-vous ?
Partager