Bonjour à toutes et à tous,
Après avoir parcouru les FAQ des différents forums anglophone et francophone (dont celui-ci) et avoir regardé les divers tutoriaux de sun, ibm, ... je viens ici avec une problématique non résolu:
J'ai une JTable composée de plusieurs colonnes.
Chaque colonne possède un renderer différent compte tenu de son comportement différent au niveau des couleurs
Lors d'une sélection de ligne (sélection unique):
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
40
41 class CustomRenderer extends DefaultTableCellRenderer { ArrayList<Data> list; CustomRenderer(ArrayList<Data> dataList) { this.list = dataList; } @SuppressWarnings("unused") public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { // TODO Auto-generated method stub Data data = this.list.getElementAt(row); switch (column) { case 0: this.setHorizontalAlignment(SwingConstants.CENTER); break; case 1: this.setHorizontalAlignment(SwingConstants.CENTER); break; case 2: this.setHorizontalAlignment(SwingConstants.LEFT); if (data.isAvailable()) { this.setBackground(Color.white); } else { this.setBackground(Color.red); } break; case 3: this.setHorizontalAlignment(SwingConstants.LEFT); if (data.getTime()> 10 ) { this.setBackground(Color.red); } else if (data.getTime()<5) { this.setBackground(Color.white); } else { this.setBackground(Color.orange); } break; } super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); return this; }
le fonctionnement par défaut du JTable colore le background de chaque cellule en bleu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setRowSelectionAllowed(true); table.setColumnSelectionAllowed(false); table.getTableHeader().setReorderingAllowed(false); table.getTableHeader().setResizingAllowed(false);
Or si certaines cases sont colorées en rouge ou orange ça ne se voit pas.
Je désire donc empêcher la coloration d'une ligne mais à la place mettre un cadre noir de sélection.
Or si je crée un cadre sur le renderer , je me retrouve avec chaque cellule entourée indépendamment des autres, et non une sélection entière de la ligne.
Avec vous une idée ou un tips pour m'orienter vers le chemin de découverte afin que tel Archimède dans son bain, je puisse m'écrier moi aussi: Eurêka!!!
Par avance je vous en remercie.
Partager