Bonjour,
je suis à la recherche d'explication sur la gestion des renderer en swing. (pas la création de renderer). J'entend par là, la compréhension des instanciations des objets.

Exemple simple. Pour appliquer son propre renderer, il faut, sur une JTable, faire :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
//Set up renderer and editor for the Favorite Color column.
        table.setDefaultRenderer(Color.class,
                                 new ColorRenderer(true));
qui revient à faire de manière plus précise:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
    TableModel model = new ColorTableModel();
    JTable table = new JTable(model);
 
    TableColumn column = table.getColumnModel().getColumn(2);
 
    ColorRenderer renderer = new ColorRenderer(true);
    column.setCellRenderer(renderer);
source du code ColorRenderer: http://docs.oracle.com/javase/tutori...rRenderer.java

Dans ces 2 exemples, on voit parfaitement qu'il n'y qu'une seule création de l'objet (par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
new ColorRenderer(true)
) et dans la classe ColorRenderer qui implemente logiquement TableCellRenderer, on trouve la fonction getTableCellRendererComponent qui retourne this, soit le component créé via le new.

Hors, plus tard, quand on va fouillé dans la JTable (JTable.class), lors de la récupération du renderer, on va récupérer le même objet pour chaque cellule ! comment est-ce possible ?

Xpmich