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:


 

Laisser un commentaire

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