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...) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
JMenuItem genOpen=(JMenuItem) open.clone();
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()

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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
MonMenuItem extends JMenuItem implements Cloneable{...}
ç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 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.