Bonjour
Je ne suis pas vraiment un débutant en java mais là j'y perd mon latin.
Donc j'ai une JTable avec un modèle et un renderer spécifique. Toutes les cellules de ma table sont des String. Les cellules ne sont pas éditables.
Tout d'abord ce que je veux : lorsque je clique sur une cellule du tableau, toutes la ligne prend une couleur fond qui la distingue des autres lignes.
Si je ne mets pas la méthode :
Cela fonctionne mais par contre le tableau n'utilise pas mon renderer spécifique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public Class<?> getColumnClass(int col) { return String.class; }
Si je mets la méthode ci-dessus, mon renderer fonctionne. Par contre quand je clique sur une cellule, le renderer utilisé pour la cellule cliquée n'est pas mon renderer personnel mais semble-t'il un autre renderer par défaut propre aux JTable.
Quelqu'un a une idée ?
Au cas où, bien que je pense que cela n'apporte rien je vous mets mon renderer personnel.
Bien sûr j'ai appliqué ce renderer à mon tableau
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 public class RendererActe extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent(JTable table, Object val, boolean isSelected, boolean hasFocus, int lig, int col) { Component composant = super.getTableCellRendererComponent(table,val,isSelected,hasFocus,lig,col); TableauActes tableau = (TableauActes) table; DonneeActe acte = (DonneeActe) tableau.getDonneeLigne(lig); if (acte.isValide()) composant.setBackground(Color.LIGHT_GRAY); else composant.setBackground(Color.WHITE); if (acte.getSV().isEmpty() || acte.getCote_reduite().isEmpty()) composant.setForeground(Color.BLACK); else composant.setForeground(Color.BLUE); return composant; } }
Je précise en outre que j'ai utilisé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public TableauActes(ModeleActes m) { super(m); setAutoResizeMode(JTable.AUTO_RESIZE_OFF); setDefaultRenderer(String.class,new RendererActe()); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 //sélection par ligne seulement tableau.setRowSelectionAllowed(true); tableau.setColumnSelectionAllowed(false);
Partager