Bonjour,
J'ai une question concernant les Jtable.
j'ai une JTable composée de trois colonnes.
La première ne contient rien (je souhaite seulement changer sa couleur de fond selon les actions utilisateur).
La deuxième correspond à des String
La dernière à des JButton.
Je définis du coup un renderer pour l'affichage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class TableRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, hasFocus, column); if (column == 0) { cell.setBackground(Color.BLACK); return cell; } if (column == 2) return (JButton) value; else return this; } }
Voici le modèle de la JTable :
Ensuite j'applique le renderer avec l'instruction
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
27
28
29
30
31
32
33
34
35
36
37
38
39 class MyModel extends AbstractTableModel { private final List<String> names= new ArrayList<String>(); @Override public Object getValueAt(int row, int column) { if (columnIndex == 0) return ""; else if (columnIndex == 2) return new JButton("name"); else return names.get(row); } @Override public int getRowCount() { return names.size()); } @Override public int getColumnCount() { return columnName.length; } @Override public String getColumnName(int column) { return columnName[column]; } @Override public Class<?> getColumnClass(int column) { else if (column == 2) return JButton.class; else return String.class; } @Override public boolean isCellEditable(int row, int column) { return false; } }
La couleur de fond est appliquée même sur la deuxième colonne. Je ne vois pas où il y a l'erreur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part setDefaultRenderer(Object.class, new TableRenderer());
Merci d'avance de votre aide
Partager