Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

JTree qui disparait

3 réponses
Avatar
jp
Bonjour,

J'ai une classe JFrame qui contient et affiche un JTree. Lorsque je crée
grâce à un menu déroulant de ma JFrame, un JDialog auquel je passe en
paramètre le JTree en question, il l'affiche. Lorsque je ferme le JDialog,
le JTree ne s'affiche plus dans ma JFrame. Il est figé et c'est le
graphisme du JTree avant l'ouverture du JDialog qui est représenté à
l'écran. L'aire qui contenait le menu déroulant à partir duquel je lance
le JDialog n'est pas rafraichie.

J'ai essayé d'appeler la méthode repaint() de ma JFrame et j'obtiens un
espace vide. Tout se passe comme si mon JTree avait disparu de ma JFrame
au retour du JDialog.

Est-ce que quelqu'un voit de quoi ça peut venir? Sinon je peux essayer de
faire et poster un schéma du code car c'est un peu long et ça contient du
code généré par NetBeans.

Merci d'avance.

3 réponses

Avatar
jp
Le Sun, 03 Feb 2019 05:51:49 +0000, jp a écrit :
La solution serait peut-être de cloner mon JTree? J'ai essayé et j'ai le
message d'erreur: clone() has protected acces in Object. Comment faire
pour cloner mon JTree qui n'implémente pas l'interface Cloneable?
Avatar
Yliur
Le 03 Feb 2019 07:51:29 GMT
jp a écrit :
Le Sun, 03 Feb 2019 05:51:49 +0000, jp a écrit :
La solution serait peut-être de cloner mon JTree? J'ai essayé et j'ai
le message d'erreur: clone() has protected acces in Object. Comment
faire pour cloner mon JTree qui n'implémente pas l'interface
Cloneable?

Si je comprends bien ton problème, tu as passé une référence à ton
JTree à une autre fenêtre. Et si je me souviens bien, un composant ne
peu avoir qu'un parent, donc il ne peut pas être placé dans deux
fenêtres (ou à deux endroits, de manière plus générale).
La solution peut consister à recréer ce composant, de la même manière
que tu l'as créé à l'origine.
La boîte de dialogue est modale, on ne peut pas toucher l'autre fenêtre
quand elle est affichée ? Dans ce cas il se peut que tu puisses faire
l'opération inverse et rattacher le composant à la fenêtre pour qu'il
reprenne sa place quand la boîte de dialogue est fermée.
Avatar
jp
Le Sun, 03 Feb 2019 14:46:09 +0100, Yliur a écrit :
Si je comprends bien ton problème, tu as passé une référence à ton JTree
à une autre fenêtre. Et si je me souviens bien, un composant ne peu
avoir qu'un parent, donc il ne peut pas être placé dans deux fenêtres
(ou à deux endroits, de manière plus générale).

Super! Merci car ça je ne le savais pas.
La solution peut consister à recréer ce composant, de la même manière
que tu l'as créé à l'origine.

Je vais essayer ça.
Merci.