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 :
Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?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; } }
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 :
Ma question est la suivante :Code:
1
2 //initialisation de mon JComboBox this.tab.getColumnModel().getColumn(noColumn).setCellEditor(new DefaultCellEditor(monComboBox));
Si je fais ce traitement après :Est-ce que cela ne va pas "annuler" l'effet du renderer ?Code:tab.setDefaultRenderer(String.class, new TabRenderer());
Merci d'avance pour votre aide.