Bonjour, j aimerai utiliser une methode paint personnalisée pour
mon JTree, comment puis je faire ca?
merci
Version imprimable
Bonjour, j aimerai utiliser une methode paint personnalisée pour
mon JTree, comment puis je faire ca?
merci
En quoi consiste ta personnalisation de ton JTree, parce qu'il y a plusieurs solution en fonction de ce que tu veux faire.
Mais si tu veux rédéfinir complètement le dessin de ton JTree il faut que tu surcharge la méthode paint(Graphics g).
Si tu veux juste redéfinir les labels, les icones ... passe par un TreeCellRenderer.
je voudrais pouvoir dessiner (et redessiner) une ligne par dessus les cases de mon JTree.
comment je fais pour surcharger ?
A mon avis, surcharger la méthode paint(Graphics g) du JTree est un enfer :wink:
Je pense qu'il vaut mieux t'orienter vers le DefaultTreeCellRenderer, quitte à en redéfinir la méthode paint() (DefaultTreeCellRenderer est une extension de JLabel).
Tu n'as pas un petit dessin pour comprendre ce que tu veux exactement comme rendu graphique ? :roll:
Ben en gros j ai mon Jtree, avec déja un affichage personnalisé.
et par dessus, je voudrais pouvoir tracer des droites avec la souris.
Ca fonctionne, seulement lorsque le Jtree rafraichit ca efface mon trait.
Je pense que ce serait pas mal de refaire la méthode repaint
Comment je fais pour surcharger la méthode?Code:
1
2
3
4
5
6 public void repaint() { paint(); this.getGraphics.drawLine(x1,y1,x2,y2); }
Dans ce cas, ce n'est pas repaint() qu'il faut redéfinir mais paintComponent(). Fais qq chose comme ça :
Code:
1
2
3
4 protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawLine(x1, y1, x2, y2); }
ok merci je vais essayer ca de suite.
Pour surcharger, je dois crée une nouvelle classe style myJTree,
ou il y a une autre methode qui peut me permettre de modifier juste
la fonction ?
Oui, c'est ça, tu dois te créer une classe MyJTree héritée de JTree et tu redéfinis les méthodes qui t'intéressent.
je n'arrive pas a instancier l'objet. Il me dit que y a pas de constructeur
défini pour la classe MyJTree. J'ai essayé de caster mais y a un ClassCastException.
Code:MyJTree myTree = (MyJTree)new JTree(root);
as-tu définis un ou plusieurs constructeurs dans la classe MyJTree ?
Tu dois plutôt écrire :
à condition que ce constructeur existe...Code:MyJTree myTree = new MyJTree(root);
J ai bien essayé de créer un constructeur,
mais le probleme est que je ne sais pas comment
faire pour initialiser mon objet JTree.
en gros, je dois mettre quoi dans mon constructeur pour qu'il se passe
la meme chose que dans le constructeur du JTree.
ok c'est bon j'ai trouvé.
merci :)Code:
1
2
3
4 public MyJTree(MutableTreeNode node) { super(node); }
je teste la suite.
ca marche pas terrible ....
ca clignote a fond et des que je change de ligne, ca rafraichit plu la ligne
d'avant.
Comment améliorer ca?
Moi j'ai fait :
et ça m'affiche bien une ligne au-dessus de l'arbre.Code:
1
2
3
4
5
6 private JTree jTree1 = new JTree() { protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawLine(0, 0, 100, 100); } };
ca marche beaucoup mieux avec ta methode, merci.
Par contre, le trait est dynamique (il suit la souris) et
il disparait derriere certains éléments.
Je vais chercher et je posterais quand j aurai bien ciblé le probleme.
J'arrive avec un train de retard mais c ou exactement que tu voulais placer un trait ?
Au dessus de chaque Label de ton JTree?
Micky1407 voulait bien tracer des droites par-dessus le JTree.