Renderer n'est jamais appelé + question
Bonjour,
J'ai un renderer de JTable qui n'est pas appelé... J'ai déjà effectué ce genre de traitement dans le passé, sans problème, mais pas cette fois ça ne fonctionne pas.
Voici le code :
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
| public MonPnl() {
ArrayList<Affaire> alTest = new ArrayList<Affaire>();
// Initialisation de alTest, les valeurs sont les bonnes
tab = new JTable(new TabModel(alTest));
tab.setDefaultRenderer(String.class, new TabRenderer());
System.out.println("on a rajouté le renderer : " + tab.getDefaultRenderer(String.class).getClass().getName());// aucun souci ici, le sysout qui indique ce qu'il faut...
this.add(new JScrollPane(tab));//juste un petit test, sans layout
}
private class TabModel extends AbstractTableModel {// aucun souci ici, les valeurs sont bonnes
}
private class TabRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
System.out.println("on lance le renderer"); // n'apparaît jamais ...
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
//traitement et analyse des données, pour la coloration, etc...
return this;
}
} |
Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?
De plus, j'aimerais que certaines cases soient éditables (dans l'AbstractTableModel, pas de problème là-dessus) mais seulement en utilisant un menu déroulant. J'ai donc trouvé une méthode, qui fonctionne :
Code:
1 2
| //initialisation de mon JComboBox
this.tab.getColumnModel().getColumn(noColumn).setCellEditor(new DefaultCellEditor(monComboBox)); |
Ma question est la suivante :
Si je fais ce traitement après :
Code:
tab.setDefaultRenderer(String.class, new TabRenderer());
Est-ce que cela ne va pas "annuler" l'effet du renderer ?
Merci d'avance pour votre aide.