JTree et renderer - Java - Programmation
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
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)
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());
}
}
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