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.
Version imprimable
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:
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: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:
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:UIManager.put("Table.alternateRowColor", Color.decode("#E1E4F2")); // Couleur alternative sur ligne