Modifier la couleur d’une cellule de JTable

Dans ce tutoriel nous allons découvrir comment changer la couleur d’une cellule de JTable. Dans le code suivant, nous allons colorer l’arrière-plan d’une cellule lors d’un événement de clic, c’est-à-dire que lorsque vous cliquerez sur la cellule JTable, l’arrière-plan de cette cellule sera bleu. Cette solution est juste pour vous donner une idée de base; vous pouvez le modifier comme vous le souhaitez.
 
 

Pour modifier la couleur de fond du texte d’une cellule de JTable, il suffit d’utiliser la méthode setForeground() au lieu de setBackground(), regardez la ligne 60 dans le code ci-dessous.

 

Exemple:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

class JtableColor extends JFrame
{
	private JPanel panel;
	private JTable table;
	private JScrollPane scrollPane;
	private String[] columns = new String[3];
	private String[][] data = new String[3][3];
	JTextField textBox = new JTextField();

	public JtableColor()
	{
		//définir le titre de JFrame
		setTitle("Exemple JTable");
		//définir la taille de JFrame
		setSize(250,250);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		//Créer un panneau
		panel = new JPanel();
		//définir le gestionnaire de disposition
		panel.setLayout(new BorderLayout());
		//ajouter le panneau au frame
		getContentPane().add(panel);
		
		//Header de JTable 
		columns = new String[] {"Colonne 1" ,"Colonne 2", "Colonne 3"};
		//données pour JTable dans un tableau 2D
		data = new String[][]
		{
			{"A","D","G"},
			{"B","E","H"},
			{"C","F","I"}
		};
		//Créer le modéle
		TableModel model = new myTableModel();
		//Créer une table
		table = new JTable();
		//définir la hauteur de ligne
		table.setRowHeight(40);
		//définir le modéle
		table.setModel(model);
		//récupérer la deuxiéme colonne
		TableColumn col = table.getColumnModel().getColumn(1);
		//définir l'éditeur
		col.setCellEditor(new DefaultCellEditor(textBox));
		//activer la selection d'une cellule de JTable
		table.setCellSelectionEnabled(true);
		scrollPane = new JScrollPane(table);
		//ajouter le JTable au panneau
		panel.add(scrollPane,BorderLayout.CENTER);
		//Evenements sur une cellule de JTable
		table.addMouseListener(new java.awt.event.MouseAdapter()  
		{
			public void mouseClicked(java.awt.event.MouseEvent e)
			{
				textBox.setBackground(Color.BLUE);
			}
		});
	}

	public class myTableModel extends DefaultTableModel
	{
		myTableModel() {
			super(data,columns);
		}

		public boolean isCellEditable(int row,int cols) {
			return true;
		}
	}

	public static void main(String args[])
	{
		JtableColor frame = new JtableColor();
		frame.setVisible(true);
	}  
}

Sortie:


 

Une réflexion sur “Modifier la couleur d’une cellule de JTable

  • décembre 24, 2024 à 5:01 pm
    Permalien

    Bonjour,
    Je tiens tout d’abord à vous remercier pour vos exemples très explicites.
    Cependant, j’ai un problème sur l’exemple « Modifier la Couleur d’une Cellule de JTable » qui ne fonctionne pas après un Copier/Coller dans eclipse du code java proposé.
    La frame s’ouvre normalement, mais lorsque je clique au même endroit que l’exemple la cellule ne devient pas « bleue » (idem ailleurs). Etant assez novice dans le domaine je pense qu’il manque quelque chose dans le java proposé mais je ne trouve pas.
    Pourriez-vous me guider s’il vous plait.
    Merci.
    Marc

    Répondre

Laisser un commentaire

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