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
?
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());
// ...
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.
Ç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) {
}
}
});
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()));
avez-vous essayé addMouseListener()
? J'espère que vous utilisez JTable de Swing.