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:


 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *