JTable : trouver la fonction qui nous donne l'index de la ligne

Fenlabise -  
 Fenlabise -
Bonjour,




Une chose me bloque, je n'ai pas trouvé la réponse ni dans les livres ni sur internet, alors je vous pose la question :
Pour afficher mes données dans un tableau, j'utilise la classe JTable comme suit :
TableauType modeleType = new TableauType(tableNom, titre);
//on instancie un tableau en y insérant le modèle ci-dessus
this.tableau = new JTable(modeleType);

et le modèle en instanciant la classe TableauType qui commence ainsi :
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;

class TableauType extends AbstractTableModel {

avec toutes ses méthodes comme getValueAt(), addRow(), etc...
Tout fonctionne très bien.
Seulement, quand je me déplace dans ce tableau soit avec les flèches de direction, soit avec l'ascenseur, soit avec la souris, je voudrais savoir à chaque instant à quelle ligne et à quelle colonne je suis. Je pense que Java devrait le savoir mais je n'ai encore pas trouvé la méthode pour récupérer cet index de ligne et colonne. Il devrait être du genre : getRowIndex() mais cette méthode ne fait pas partie de la classe AbstractTableModel que j'utilise.
Alors faut-il utiliser une autre classe?
ou bien importer un autre package (import ...)
Vous avez certainement une idée.

Merci, Fenlabise.

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Si j'ai bien compris ce que tu veux, tu devrais regarder How to Write a List Selection Listener. Exemple :

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class Test
{
public static void main(String[] args)
{
String[] header = { "A", "B"};
String[][] data = {{"a0","b0"},{"a1","b1"},{"a2","b2"},{"a3","b3"},{"a4","b4"},{"a5","b5"}};

JTable table = new JTable(data,header);

ListSelectionModel selection = table.getSelectionModel();
selection.addListSelectionListener(new ListSelectionListener()
{
	@Override
	public void valueChanged(ListSelectionEvent e)
	{
		System.out.println(e);
	}
});

JFrame frame = new JFrame();
frame.add(new JScrollPane(table));
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
0
Fenlabise
 
Merci KX,
c'est exactement ce que je recherchais. Il ne me reste plus qu'à trouver les méthode de la classe et j'intègre dans mon programme.
Fenlabise
0