Bonjour,
dans une application, j'ai un JMenu qui contient des JMenuItem et j'aimerais avoir les mêmes JMenuItem dans un JPopupMenu. Pour ce faire je cherche à faire une copie profonde de ces JMenuItem, ce qui m'évitera la demi-douzaine de lignes de code nécessaire au paramétrage de chacun d'eux. J'utilise donc ceci (ou plutôt j'essaye...) :
Malheureusement Eclipse me signale que clone() est "invisible" et je n'arrive pas à comprendre ce qui se passe. Je précise que cet appel se situe au sein d'une méthode private et que open est un private JMenuItem Qu'est-ce qui ne va pas ? C'est certainement une histoire de droit d'accès, mais je sèche... JMenuItem hérite d'Object, il devrait donc pouvoir accéder à protected clone()
Code : Sélectionner tout - Visualiser dans une fenêtre à part JMenuItem genOpen=(JMenuItem) open.clone();
Merci
LJM.
[edit] J'ai fini par trouver ! JMenuItem n'implémente pas l'interface Cloneable qui est nécessaire pour pouvoir appeler clone() Je suppose que si je fais
ça ne marchera pas non plus car si certaines classes n'implémentent pas cette interface, c'est apparemment parce-que la méthode clone() renvoie de résultats abérants quand elle leur est appliquée. Ca va cloner, mais il y aura des altération génétiques
Code : Sélectionner tout - Visualiser dans une fenêtre à part MonMenuItem extends JMenuItem implements Cloneable{...}et l'objet retourné sera inutilisable.
Ceci dit je suis toujours preneur s'il y a moyen de créer ce second menu sans taper la palanquée de lignes nécessaire au paramétrage de tous les JMenuItem qu'il contient.
LJM.
Partager