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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
tab.setDefaultRenderer(String.class, new TabRenderer());
Est-ce que cela ne va pas "annuler" l'effet du renderer ?

Merci d'avance pour votre aide.