Utiliser DefaultTreeCellRenderer pour JXTreeTable
Est-ce quelqu'un sait comment utiliser renderer personalisé pour JXTreeTable? Pour la 1ère colonne où il y a mon tree - ça fonctionne, j'ai une icône et texte bien formaté. Mais je n'arrive pas à faire afficher une icône et texte dans d'autres colonnes.
Dans ma view je fais:
Code:
1 2 3 4 5
|
jxMemosTable = new JXTreeTable(areaMemosTreeTableModel);
AreaMessagesTreeCellRenderer renderer = new AreaMessagesTreeCellRenderer(getLocale());
renderer.setIconMap(GENERALMEM_ICONMAP, true);
jxMemosTable.setTreeCellRenderer(renderer); |
et dans mon renderer qui extends DefaultTreeCellRenderer j'ai ça:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, selected, expanded,
leaf, row, hasFocus);
DefaultMutableTreeNode node = null;
if (value instanceof DefaultMutableTreeNode) {
node = (DefaultMutableTreeNode) value;
if (node.getUserObject() instanceof PersonsTreeNode) {
PersonsTreeNode personsNode = (PersonsTreeNode) node.getUserObject();
Person person= personsNode.getPerson();
String name = DefaultFormats.PERSONCODEFORMAT.format(person
.getPersonId())
+ " " + person.getName();
setText(name);
setIcon(..myIcon url..);
}
} else if (value instanceof JLabel) {
if (iconMap != null) {
Icon ic = (Icon) iconMap.get(value);
super.setIcon(ic);
if (iconsOnly) {
super.setText("");
((JLabel) this)
.setHorizontalAlignment(SwingConstants.CENTER);
}
}
}
return this;
} |
Et je ne sais pas comment "checker" la valeur de la 2ème colonne:( Avec instance of JLabel, - il n'y rentre jamais... Quelqu'un a une idée ou encore mieux un exemple?
Utiliser DefaultTreeCellRenderer pour JXTreeTable
Ce que je ne comprends pas, - c'est quel renderer il faut utiliser pour "customiser" l'affichage dans d'autres colonnes. Si DefaulTreeCellRenderer ne s'occupe que de tree nodes, qui alors va s'occuper du reste ? DefaultTableCellRenderer. Si oui, comment peut-on avoir 2 renderers différents sur une table, est-ce possible ? Je ne comprends rien...:( Au secours