Dans mon cas, l'objet du noeud est capable de fournir sa propre icone, ce qui simplifie le code. Du coup la solution est simple : il suffit de faire un Renderer héritant de DefaultTreeCellRenderer et de redéfinir la méthode getTreeCellRendererComponent.
Ce qui donne :
@Override
public Component getTreeCellRendererComponent(JTree tree,
Object value,
boolean sel,
boolean expanded,
boolean leaf, int row,
boolean hasFocus) {
Component component = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
if (Filiale.class.isInstance(value)) {
setIcon(((Filiale) value).getIcon());
}
return component;
}
public Component getTreeCellRendererComponent(JTree tree,
Object value,
boolean sel,
boolean expanded,
boolean leaf, int row,
boolean hasFocus) {
Component component = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
if (Filiale.class.isInstance(value)) {
setIcon(((Filiale) value).getIcon());
}
return component;
}
Pour plus d'info : http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html#display
Aucun commentaire :
Enregistrer un commentaire