JTree et renderer

JTree et renderer - Java - Programmation

Marsh Posté le 07-04-2005 à 15:08:39    

Encore une nouvelle qestion, ;)
Je voudrais modifier le renderer de mon JTree pour que si dans l'arboressance dessandante il y ai une valeur donnée (Ko dans mon cas), il affiche le noeud en rouge.
 ROOT
  |
  |
  NOEUD(ROUGE)
   |         |
   |         |
   |         |
   |         VALEUR KO
   |
  NOEUD(NORMAL)
   ...
 
 
Je sais que je doit modifier public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected,boolean expanded,boolean leaf, int row,boolean hasFocus) mais 2 problemes se pose a moi.  
1 Je ne veux pas perdre le rendu actuel, 2 je ne voit pas comment lui dire de mettre les parents en rouge.
 
Je sais que c'est pas evident mais si vous avez des IDs ;)

Reply

Marsh Posté le 07-04-2005 à 15:08:39   

Reply

Marsh Posté le 07-04-2005 à 17:14:42    

tu fais une fonction qui dit si un noeud possède un fils qui est ko, et si c'est le cas, tu affiches en rouge [:spamafote]


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 07-04-2005 à 17:15:25    

(enfin, je veux dire par là qu'il n'y a pas de feinte particulière)


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 08-04-2005 à 10:51:17    

Voila a quoi j'arrive pour le moment, mais ce n'est pas encore super. Seul le noeud qui contient la valeur ne ce met a jaune.
 
private class MyTreeCellRenderer extends DefaultTreeCellRenderer
    {
      public Component getTreeCellRendererComponent(JTree tree, Object value,
                                                    boolean sel,
                                                    boolean expanded,
                                                    boolean leaf, int row,
                                                    boolean hasFocus)
      {
 
        Component cComponent = super.getTreeCellRendererComponent(tree, value, sel,
            expanded, leaf, row, hasFocus);
        //String text = tree.convertValueToText(value, sel,expanded, leaf, row, hasFocus);
        DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)value;
        if(dmtn.getUserObject().toString().contains("100" ))
        {
          setColorParent(dmtn);
        }
        return cComponent;
      }
       
      private void setColorParent(DefaultMutableTreeNode pm_dmtnNode)
      {
        if(pm_dmtnNode==null)return;
 
        String s = pm_dmtnNode.getUserObject().toString();
        JLabel l = new JLabel(s);
        l.setForeground(Color.RED);
        pm_dmtnNode.setUserObject(l);
        System.out.println("pm_dmtnNode.getUserObject().toString()=" + pm_dmtnNode.getUserObject().toString());
        this.setForeground(Color.black.YELLOW);
        setColorParent(pm_dmtnNode.getPreviousNode());
      }
    }

Reply

Sujets relatifs:

Leave a Replay

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