Bonjour,
J'ai recherché pour savoir la manière dont il fallait procédé pour obtenir un JTable (JXTable pour être précis) avec des lignes de couleurs différente si elles sont éditable ou non. J'ai trouvé une solution qui semblerait être la bonne, seulement cela ne marche pas...
J'ai créé un TableCellRenderer et surchargé la méthode getTableCellRendererComponent(), et ensuite affecté mon modèle à mon tableau, voici le code :
TableCellRenderer :
L'affectation du modèle au 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
18
19
20
21
22
23
24
25
26 public class MyTableCellRenderer extends DefaultTableCellRenderer { /** * Numéro de version pour sérialisation */ private static final long serialVersionUID = -6792822905989381648L; /* * (non-Javadoc) * @see javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) */ @Override public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int ligne, int colonne) { Component composant = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, ligne, colonne); System.out.println("buh"); if (!isSelected && !hasFocus) { if (((MyTableModel) table.getModel()).isCellEditable(ligne, colonne)) { composant.setBackground(Color.LIGHT_GRAY); } else { composant.setBackground(Color.WHITE); } } return composant; } }
En théorie ça devrait marché, mais il ne même pas dans la méthode getTableCellRendererComponent()...
Code : Sélectionner tout - Visualiser dans une fenêtre à part tableau.setDefaultRenderer(Component.class, new MyTableCellRenderer());
Donc la question que je me pose : Qu'est ce que j'ai mal fait ?
Sinon, il y a pas mal de propriétés définies sur mon tableau, il y a des propriétés qui peuvent définir cette action à la place de mon TableCellRenderer ?
Partager