Question

J'ai un JTable avec JLabel[][] sous forme de données. Maintenant, je veux détecter un double-clic soit sur le JLabel ou une cellule de table (mais seulement dans l'une des colonnes). Comment puis-je ajouter une action / MouseListener sur la cellule de table JLabel respectivement?

Était-ce utile?

La solution

Que diriez-vous:

table.addMouseListener(new MouseAdapter() {
  public void mouseClicked(MouseEvent e) {
    if (e.getClickCount() == 2) {
      JTable target = (JTable)e.getSource();
      int row = target.getSelectedRow();
      int column = target.getSelectedColumn();
      // do some action if appropriate column
    }
  }
});

Autres conseils

En fait la même suggestion que celui déjà accepté, sauf:

a) vous devez gérer mousePressed, non mouseClicked. Un événement mouseClicked est tiré seulement lorsqu'un événement mousePressed et mouseReleased est généré au même emplacement de pixel. Vous si l'utilisateur déplace la souris même 1 pixel en deux que vous cliquez sur n'obtenir le double-clic attendu.

b) Vous pouvez également envisager d'utiliser les méthodes columnAtPoint () et rowAtPoint () pour obtenir la cellule cliqué. Bien qu'il n'a probablement pas de différence dans ce cas, il importe si vous essayez toujours d'utiliser un MouseListener pour les clics droit de la souris, puisque la sélection ne change pas. Si vous obtenez dans l'habitude d'utiliser cette méthode, vous aurez pas de problèmes à l'avenir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top