JTable : trouver la fonction qui nous donne l'index de la ligne
Fenlabise
-
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.
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
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); } }