Je développe un JTable avec différentes lignes. Je voudrais associer un événement à la sélection d'une ligne dans ce tableau. Je l'ai utilisé la classe de sélection ci-dessous pour fournir un comportement à la sélection de table:problème lors de l'implémentation d'un écouteur de sélection dans un JTable
public class TableSelectionListener implements ListSelectionListener{
public Integer item;
public TableSelectionListener(Integer item){
this.dialog = item;
}
public void valueChanged(ListSelectionEvent e) {
System.out.println("The row clicked is "+item);
}
}
Lorsque je crée une instance de ce tableau, sai tabletest, j'ai ajouté le morceau de code suivant:
tabletest.getSelectionModel().addListSelectionListener(new TableSelectionListener(tabletest.getSelectedRow());
Le problème est que lorsque je clique sur une ligne une fois, au lieu de récupérer le message associé une fois, je récupère le même message plusieurs fois, ce qui suggère que les actions répétées plusieurs fois. Par exemple:
The row clicked is 0
The row clicked is 0
The row clicked is 0
The row clicked is 0
Est-ce que quelqu'un sait où le problème peut être?
Eh bien, ça ne fonctionne pas: si je clique sur le deuxième et troisième ligne la sortie de message est correct: « La ligne sélectionnée est 1 » et "La ligne cliquée est 2". Cependant quand je clique sur la première rangée au lieu de me donner 0 cela me donne encore 2. – Anto
L'approche alternative serait de demander à l'auditeur de la table quelles lignes ont été choisies. – Carlos
'e.getFirstIndex()' n'est pas très fiable. utilisez table.getSelectedRow() - c'est plus stable. –