web-dev-qa-db-fra.com

Déterminer la cellule JTable sur laquelle l'utilisateur a cliqué

Lorsqu'un utilisateur clique sur une cellule sur un JTable, comment puis-je déterminer la ligne et la colonne de la cellule cliquée? Comment afficher ces informations dans un JLabel?

21
Cristian

La réponse existante fonctionne, mais il existe une autre méthode qui peut mieux fonctionner si vous n'activez pas la sélection de cellule. Dans votre MouseListener, faites quelque chose comme ceci:

public void mouseClicked(Java.awt.event.MouseEvent event) {
    int row = theTable.rowAtPoint(event.getPoint());
    int col = theTable.columnAtPoint(event.getPoint());
    // ...
35
Pops

Vous pouvez utiliser les méthodes suivantes sur JTable pour récupérer la ligne et la colonne de la cellule sélectionnée:

int rowIndex = table.getSelectedRow();
int colIndex = table.getSelectedColumn();

Et ajoutez un SelectionListener à la table pour attraper l'événement lorsque la table est sélectionnée.

17
Georg Leber

Ça marche pour moi!!!

jTable1.addMouseListener(new Java.awt.event.MouseAdapter() {
@Override
 public void mouseClicked(Java.awt.event.MouseEvent evt) {
    int row = jTable1.rowAtPoint(evt.getPoint());
    int col = jTable1.columnAtPoint(evt.getPoint());
    if (row >= 0 && col >= 0) {


    }
 }
});
3
Tamil

J'ai trouvé que lorsque les colonnes sont cachées/réorganisées columnAtPoint renvoie l'index de colonne visible, ce qui n'est pas ce dont j'avais besoin. Le code qui a fonctionné pour moi est

int row = theTable.convertRowIndexToModel(theTable.rowAtPoint(event.getPoint()));
int col = theTable.convertColumnIndexToModel(theTable.columnAtPoint(event.getPoint()));
1
Alexey Romanov

avez-vous essayé addMouseListener()? J'espère que vous utilisez JTable de Swing.

1
AlexR