Faire un JTable cellule modifiable - mais *pas* en double-cliquant

Je suis en train d'ajouter une colonne à une JTable avec le comportement suivant (similaire à l'Explorateur Windows et similaires coquilles):

  • La cellule peut être cliqué une fois pour le sélectionner, comme d'habitude.
  • La cellule peut y avoir double-cliqué sur l'icône pour effectuer une autre action (lancer un programme externe.)
  • La valeur de la cellule (une chaîne) peut encore être modifié, par un simple clic sur un second temps (après une pause) ou en appuyant sur F2 lorsque la cellule est mise en surbrillance.

Double-cliquant doivent pas déclencher l'édition de la cellule, mais je voudrais laisser à tout autre défaut de l'édition déclenche opérationnelles si possible.

J'ai essayé d'ajouter un MouseListener à la table, et la consommation de tous les MouseEvents, mais cela ne fonctionne pas - si-je retourner true de isCellEditable() puis mon auditeur ne reçoit jamais d'cliquez sur événements, mais si je retourne false puis F2 ne fonctionne plus.

Cela peut être réalisé en utilisant uniquement des écouteurs d'événement? Je préfère ne pas se salir avec le PLAF fonctions, si je peux l'éviter.

Ici il y a une plus récente réponse de camickr qui résoudra le problème en 4 lignes de code.

OriginalL'auteur finnw | 2009-08-12