Alterner la couleur des lignes dans une JTable
JTable est une sous-classe de la classe JComponent et elle peut être utilisée pour créer une table avec des informations affichées dans plusieurs lignes et colonnes. Lorsqu’une valeur est sélectionnée dans une table JTable, un événement TableModelEvent est généré, qui est géré en implémentant l’interface TableModelListener.
Nous pouvons définir la couleur pour alterner la couleur des lignes dans une JTable en redéfinir la méthode prepareRenderer() de la classe JTable.
Syntaxe:
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
Exemple:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; public class JtableColor extends JFrame { public JtableColor() { setTitle("Alterner couleur JTable"); //Header de JTable String[] columns = new String[]{"Id","Nom","Adresse","Taux horaire"}; //données pour JTable dans un tableau 2D Object[][] data = new Object[][] { {1, "Thomas", "Paris", 20.0 }, {2, "Jean", "Marseille", 50.0 }, {3, "Yohan", "Lyon", 30.0 }, {4, "Emily", "Toulouse", 60.0 }, {5, "Alex", "Nice", 10.0 }, }; JTable table = new JTable(data, columns) { public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component c = super.prepareRenderer(renderer, row, column); Color color1 = new Color(220,220,220); Color color2 = Color.WHITE; if(!c.getBackground().equals(getSelectionBackground())) { Color coleur = (row % 2 == 0 ? color1 : color2); c.setBackground(coleur); coleur = null; } return c; } }; add(new JScrollPane(table)); setSize(400, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } public static void main(String[] args) { new JtableColor(); } }
Sortie: