Détection de simple clic ou de double clic sur JTable – Java

JTable est un composant Swing flexible qui est très bien adapté pour afficher des données dans un format tabulaire. Dans ce tutoriel, nous allons découvrir comment détecter le simple clic ou le double clic sur JTable en Java.


 
Chaque fois qu’une sélection est effectuée, ListSelectionEvent est déclenché. La méthode valueChanged() dans l’interface ListSelectionListener est appelée chaque fois qu’une nouvelle sélection a été effectuée.
 
 

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


public class ClickJTable implements ListSelectionListener 
{
	JTable table;
	  
	public ClickJTable() 
	{
	JFrame f = new JFrame("Clic sur JTable");

	//En-têtes pour 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 },
	};

		//définir le TableModel pour récupérer les données de JTable
		TableModel model = new AbstractTableModel() 
		{
			public int getColumnCount() { 
				return columns.length; 
			}
			
			public int getRowCount() { 
				return data.length;
			}
			
			public Object getValueAt(int row, int col) {
				return data[row][col];
			}
			
			public String getColumnName(int column) {
				return columns[column];
			}
			
			public Class getColumnClass(int col) {
				return getValueAt(0,col).getClass();
			}
			
			public void setValueAt(Object aValue, int row, int column) {
				data[row][column] = aValue;
			}
		};

		table = new JTable(model);

		ListSelectionModel listModel = table.getSelectionModel();
		listModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		listModel.addListSelectionListener(this);

		JScrollPane scroll = new JScrollPane(table);
		scroll.setPreferredSize(new Dimension(300, 300));
		f.getContentPane().add(scroll);
		f.setSize(400, 180);
		f.setVisible(true);
	}

	public void valueChanged(ListSelectionEvent e) {
		int[] sel;
		Object value;

		if (!e.getValueIsAdjusting()) 
		{
			sel = table.getSelectedRows();

			if (sel.length > 0) 
			{
				for (int i=0; i < 4; i++) {
					// récupérer les données de la table
					TableModel tm = table.getModel();
					value = tm.getValueAt(sel[0],i);
					System.out.print(value + " ");
				}
				System.out.println();
			}
		}
	}

	public static void main(String[] args) {
		new ClickJTable();
	}
}

Sortie:


 

Laisser un commentaire

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