[Swing][jtree]Problemes d'icones....

Problemes d'icones.... [Swing][jtree] - Java - Programmation

Marsh Posté le 06-04-2004 à 10:51:00    

voilà ce que je desire:  
possedant par exemple un telle jtree  
ListesUser  
|__Forum_java  
| |__J  
| |__wassimb  
|  
|__Forum_Vb  
  |__x  
  |__y
  |....  
Pour J et wassimb ces derniers apartienent au forum java ==>j'insere une icone(x)  
Pour x et y ces derniers apartienent au forum VB ==>j'insere une icone(y)  
le probleme reside au fait que je n'ai pas trouver comment faire pour tester  
sur le parent de la feuille(cad:if(feuille appartient noeud Forum_java)==>insere icone(x)  
if(feuille appartient noeud Forum_Vb)==>insere icone(y))  
Comment Faire alors ?  
j'ai realiser mon jtree mais je n'ai pas su comment integer des test dans cette class pour y ajouter des icones comme je desire Voila ma class:

Code :
  1. public class RenduArbre extends JPanel implements TreeCellRenderer,MouseMotionListener
  2. {
  3.   private Icon icone;
  4.   private int rowSelection = -1;
  5.   public RenduArbre(Icon icone)
  6.   {
  7.      super(new FlowLayout());
  8.      this.icone = icone;
  9.   }
  10.   public Component getTreeCellRendererComponent(JTree tree, Object value,
  11.         boolean selected, boolean expanded, boolean leaf, int row,
  12.         boolean hasFocus)
  13.   {
  14.      this.removeAll();
  15.    
  16.    if(leaf)
  17.      {
  18.         JLabel labelIcone = new JLabel(this.icone);
  19.         this.add(labelIcone);
  20.      }
  21.    if(value != null)
  22.      {
  23.         JLabel labelTexte = new JLabel(String.valueOf(value));
  24.         if(selected)
  25.         {
  26.            labelTexte.setForeground(Color.red);
  27.         }
  28.         else
  29.         {
  30.            labelTexte.setForeground(Color.black);
  31.         }
  32.         if(row == this.rowSelection)
  33.         {
  34.            this.setBackground(Color.cyan);
  35.         }
  36.         else
  37.         {
  38.            this.setBackground(Color.white);
  39.         }
  40.         this.add(labelTexte);
  41.      }
  42.      return this;
  43.   }
  44.      arbre.repaint();
  45.   }
  46. }


Je compte sur vous ...  
Merci d'avance

Reply

Marsh Posté le 06-04-2004 à 10:51:00   

Reply

Marsh Posté le 06-04-2004 à 11:01:02    

Il faut que rajoutes un test sur le type ou la valeur du parametre value dans la methode getTreeCellRendererComponent().
En fonction du resultat de ce test tu mets l'icone correspondant.


---------------
Light is right
Reply

Marsh Posté le 06-04-2004 à 11:04:39    

Je ne veut pas tester sur la contenu de la valeur mais sur l'appartenace de la feuille :A quel noeud elle appartient...

Reply

Marsh Posté le 06-04-2004 à 11:20:48    

OK, donc tu as 2 solutions differentes:
 - soit tu mets un type d'objet different pour chaque noeud et tu fait un test sur le type de l'objet pour savoir quel icone afficher dans la methode getTreeCellRendererComponent
 - soit tu recherches quel est le noeud parent de ton objet value pour savoir quel icone afficher
Personnelement je prefere la premiere methode.
Quel est le type d'objet que tu mets comme noeud de ton arbre ?


---------------
Light is right
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed