donc ca marche ? tu as tes cases de couleur ?
Version imprimable
donc ca marche ? tu as tes cases de couleur ?
Voila j ai mes case couleur voici le code utiliser :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 class ColorTableCellRenderer extends JLabel implements TableCellRenderer { private JPanel panel = new JPanel(); public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value instanceof Color) { panel.setBackground((Color)value); } return panel; } }
Code:
1
2
3 jTable = new JTable(model); // Creation de la table avec un model jTable.setModel(model); jTable.getColumnModel().getColumn(7).setCellRenderer(new ColorTableCellRenderer()); // le renderer ne s applique que a la colonne 7
Le model du tableau pour le nombre de ligne et de colonne
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public class MyModel extends DefaultTableModel{ private static final long serialVersionUID = 8083956857937064934L; public int getColumnCount() { return 8; } public int getRowCount() { return 50; } public boolean isCellEditable(int row, int column) { // Aucune cellule éditable return false; } }
Enfin la fonction qui rempli le model et donc les cellule du tableau
Code:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 public void supervision() { int taillesp=listsuperviser.size(); int col=0,nberreur=0; String nom=null; for(int a=0;a<taillesp;a++) //chargement sur le tableau de la liste des postes supervisés { col=0; element =(CControle_agent_snmp)listsuperviser.get(a); //récuperation d'un objet de la liste situé a i if(element.lire_etat()!=-1) // mise a jour des informations de l'objet { model.setValueAt(element.getNom_poste(),a,col++); // Ajout des informations dans le tableau model.setValueAt(Float.toString(element.getTension_entree()),a,col++); model.setValueAt(Float.toString(element.getTension_sortie()),a,col++); model.setValueAt(Float.toString(element.getCourant_sortie()),a,col++); model.setValueAt(new Integer(element.getNiv_batterie()),a,col++); if(element.getMode()==1) nom="batterie"; else nom="Secteur"; model.setValueAt(nom,a,col++); if(element.getEtat()==1) model.setValueAt("Actif",a,col++); else model.setValueAt("Inactif",a,col++); detecter_evt(element,a,col); // methode de detection des erreurs switch(element.getEtat()) { case 1: { model.setValueAt(Color.green,a,col); break; } case -1: { model.setValueAt(Color.red,a,col); break; } } element=null; // mise a null de l'élement pour suppresion par le Garbage Collector } else { col=0; // Affichage en cas de postes non joignable nberreur++; model.setValueAt(element.getNom_poste(),a,col++); model.setValueAt("INCONNU",a,col++); model.setValueAt("INCONNU",a,col++); model.setValueAt("INCONNU",a,col++); model.setValueAt("INCONNU",a,col++); model.setValueAt("Erreur",a,col++); model.setValueAt("INACTIF",a,col++); model.setValueAt(Color.blue,a,col); }} if(nberreur==taillesp) // arret de la supervision si aucun des postes n'est atteignable { minuteur.stop(); // arret minuteur MIdesactive.setSelected(true); }}
Un TRES GRAND MERCI A BIOZAXX pour son aide.
Mais parce qu il y a un mais j ai un petit bug qui subsitent toujours, les cellules ce met bien a jour de meme pour la couleur mais :
Exmple les cellue 1 a 4 ( colonne 7 ) sont bleu les autres cellule du tableau n'ont pas couleur (normale).
Si le clic sur la cellule 10 (colonne7) toutes les cellules comprise entre 1 et 10 vont prendre la couleur bleu. Comment empecher ceci?? :D
J ai trouver la solution la voici :
Merci a tous le mondeCode:
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 class ColorTableCellRenderer extends JLabel implements TableCellRenderer { private JPanel panel = new JPanel(); private CApplication rowsp; public ColorTableCellRenderer() { super(); setOpaque(true); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value instanceof Color) { panel.setBackground((Color)value); } else panel.setBackground(null); return panel; } }