Bonjour j'aimerais avoir un tableau qui ressemble à l'image ci jointe et ainsi lorsque l'on insere les données dans ce tableau qu'il y'ai toujours au moins une ligne non remplie.
Bonjour j'aimerais avoir un tableau qui ressemble à l'image ci jointe et ainsi lorsque l'on insere les données dans ce tableau qu'il y'ai toujours au moins une ligne non remplie.
Pour les couleurs alternées: il va te falloir écrire un renderer qui suivant le numéro de la ligne applique l'une ou l'autre des couleurs. Renderer héritant de DefaultCellRenderer et redéinissant la méthode getTableCellRendererComponent. cf http://baptiste-wicht.developpez.com...ing/jtable/#L5
Une chose dans ce genre
Et le placer sur la table de la façon suivante:
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 public class AlternateRowRenderer extends DefaultTableCellRenderer { private final static Color LIGHT_ROW_BG_COLOR = Color.white; private final static Color DARKER_ROW_BG_COLOR = Color.yellow.lighter().lighter(); @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); //color remains the same while selected if (isSelected) { comp.setForeground(table.getSelectionForeground()); comp.setBackground(table.getSelectionBackground()); } else { Color bgColor = null; Color fgColor = null; if (row%2 != 0) //once out of two rows, change color bgColor = AlternateRowRenderer.LIGHT_ROW_BG_COLOR; else { bgColor = AlternateRowRenderer.DARKER_ROW_BG_COLOR; } comp.setBackground(bgColor); comp.setForeground(table.getForeground()); } return c; } }
Si tu dois avoir d'autres renderers sur ta JTable, il faudra que tous tes renderers héritent de l'AlternateRowRenderer et utilisent bien le retour de super.getTableCellRendererComponent dans leur getTableCellRendererComponent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part maTable.setDefaultRenderer(Object.class, new AlternateRowRenderer());
Par exemple voici un renderer mettant en rouge+gras le contenu d'une cellule si celui si est entier et vaut moins que 0:
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 public class LessThanZeroRenderer extends AlternateRowRenderer { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (value.getClass() = Integer.class) { Integer i = (Integer) value; if ( i.intValue() < 0) { c.setForeground(Color.red); c.setFont(c.getFont().deriveFont(Font.BOLD); } } return c; } }
Pour l'histoire de la ligne supplémentaire, il suffit que ton modèle la contienne. Comment as tu défini ton modèle?
Pour les couleurs en alternances, il y a plus simple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part UIManager.put("Table.alternateRowColor", Color.decode("#E1E4F2")); // Couleur alternative sur ligne![]()
Partager