Bonjour,
je voudrais changer la couleur ou "setenabled" des lignes de mon Jtable selon la valeur d'un champ de la ligne.
Merci d'avance![]()
Bonjour,
je voudrais changer la couleur ou "setenabled" des lignes de mon Jtable selon la valeur d'un champ de la ligne.
Merci d'avance![]()
Ca ne serait pas la méthode setGridColor() de Jtable?
Jete un oeil dans la javadoc...
cette méthode change la couleur pour toutes les lignes.
moi je voudrais trouver un ( ou un moyen de le coder) qui fait
setcolor(int row, Color color)
Merci.
tu doit créer une classe qui hérite de JLabel et qui implémente TableCellRenderer
et ensuite ajouter ce renderer à ta table
dans le code suivant , un exemple de personnalisation d'affichage de cellule
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
42
43
44
45
46
47
48
49
50 public class CellObjectRenderer extends JLabel implements TableCellRenderer { public CellObjectRenderer() { super(); setOpaque(true); // A NE PAS OUBLIER sinon ca marche pas } /** * méthode personnalisant les couleurs de la cellule. * @param table * @param value * @param isSelected * @param hasFocus * @param row * @param column * @return le component à afficher */ public Component getTableCellRendererComponent(JTable table,Object value, boolean isSelected, boolean hasFocus, int row, int column) { setText((String) value); if ( (row%2) != 0) //ligne impaire { setBackground(Color.blue); } else // ligne paire { setBackground(Color.green); } if(isSelected)// ligne selectionné { setBackground(Color.red); setForeground(Color.orange); } else//si pas selectionné { setForeground(Color.pink); } return this; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CellObjectRenderer objRender = new CellObjectRenderer(); ta_table.setDefaultRenderer(java.lang.Object.class,objRender);
dite moi j'ai un petit problème avec l'utilisation de cette class : j'ai un class cast Exception lors de l'appel de la fonction.
d'aillieur c'est la première foi que je voi ça : return this;
mon code :
NB : l'Exception n'est pas levée ici mais en amont !
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 public Component getTableCellRendererComponent(JTable table,Object value, boolean isSelected, boolean hasFocus, int row, int column) { Class cl = table.getColumnClass(column); if(!cl.equals(String.class))return this; setText((String)value); try { TableModel tm = table.getModel(); Integer QT = (Integer)tm.getValueAt(row,6); int qt = QT.intValue() ; if ( qt == 0 ) { setBackground(Color.YELLOW); } } catch(Exception e) { System.out.println("ERROR dans ...."); System.out.println(e+"\n"); } return this; }
essaye plustot avec ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TableModel tm = table.getModel(); Integer QT = (Integer)tm.getValueAt(row,6); int qt = QT.intValue()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int qt =Integer.ParseInt((String) tm.getValueAt(row,6));
Merci.
ça marche impecc![]()
![]()
![]()
Slt,
désolé de répondre aussi tard ( et je crois même que tu as déjà résolu ton affaire) mais voici un peu de code qui peut éviter des recherches à certains.
Voila, cette exemple évite d'utiliser des JLabel en composant (moins pénible d'utilisation) et permet de montrer comment trier à partir d'un clic sur l'entete d'une colonne (vite fait...). Sinon row et column représentent les lignes et les colonnes...
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
42
43
44 TableSorter sorter = new TableSorter( new ModelTable( donneeTableau.length == 0 ? 1 : donneeTableau.length, enteteTableau ) ); JTable tab = new JTable( sorter ) { public Component prepareRenderer( TableCellRenderer renderer, int row, int column ) { Component component = super.prepareRenderer( renderer, row, column ); int ii = 0; if ( Page.this.getSource().getTypeActif() == Fenetre.OF ) { double delta = Integer.parseInt( String.valueOf( this.getValueAt( row, 2 ) ) ) * 0.02; int ecart = Integer.parseInt( String.valueOf( this.getValueAt( row, 3 ) ) ); if ( Math.abs( ecart ) > delta && String.valueOf( this.getValueAt( row, 4 ) ).equals( "Soldé" ) ) component.setForeground( Color.RED ); else component.setForeground( Color.BLACK ); } else { if ( Page.this.getSource().getBoutonActif() == Fenetre.CONDITIONNEMENT ) { while ( ii < ligneRouge.size() ) { if ( row == Integer.parseInt( (String) ligneRouge.elementAt( ii ) ) ) component.setForeground( Color.RED ); else component.setForeground( Color.BLACK ); ii++; } } } component.setFont( new Font( "Arial", Font.PLAIN, 14 ) ); return component; } }; sorter.setTableHeader(tab.getTableHeader());
A plous_
Partager