Comment insérer un checkbox dans un 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 une interface TableModelListener. Nous pouvons ajouter ou insérer une case à cocher dans une cellule JTable en implémentant la méthode getColumnClass().
 


 
Nous devons redéfinir la méthode getColumnClass() pour renvoyer Boolean.class pour la colonne appropriée.
 

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

public class CheckBoxInTable extends JFrame 
{
	public CheckBoxInTable() 
	{
		//En-têtes pour JTable 
		String[] columns = {"Id", "Nom", "Adresse", "Disponible"};

		//données pour JTable dans un tableau 2D
		Object[][] data = {
			{1, "Thomas", "Paris", true },
			{2, "Jean", "Marseille", true },
			{3, "Yohan", "Lyon", false },
			{4, "Emily", "Toulouse", false }
		};

		DefaultTableModel model = new DefaultTableModel(data, columns);
			
		JTable table = new JTable(model) {
			public Class getColumnClass(int column) {
				//renvoie Boolean.class
				return getValueAt(0, column).getClass(); 
			}
		};

		JScrollPane scrollPane = new JScrollPane(table);
		getContentPane().add(scrollPane);
			
		JLabel labelHead = new JLabel("Liste des employes");
		labelHead.setFont(new Font("Arial",Font.TRUETYPE_FONT,20));
		getContentPane().add(labelHead,BorderLayout.PAGE_START);
	}

	public static void main(String[] args) 
	{
		CheckBoxInTable frame = new CheckBoxInTable();	
		frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
		frame.setSize(400, 200);
		frame.setVisible(true);
	}
}

Sortie:


 
Partagez cet article

Laisser un commentaire

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