En supposant que vous avez joint le KeyListener correctement et ont mis en œuvre les méthodes nécessaires pour que KeyListener, pour détecter clé spécifique-presses de simplement ajouter le code suivant:
publicvoid keyReleased(KeyEvent ke){if(ke.getKeyCode()==KeyEvent.VK_BACK_SPACE){//code to execute if backspace is pressed}if(ke.getKeyCode()==KeyEvent.VK_ESCAPE){//code to execute if escape is pressed}}
La KeyEvent la documentation javadoc de la classe peut être trouvé sur le lien suivant: KeyEvent javadoc.
Vous y trouverez une liste de tous les virtuelle Java de celles utilisées pour détecter l'entrée de clavier lors de l'implémentation de Java KeyListeners et KeyEvents. Plus d'informations sur KeyListeners peut être trouvé ici: Comment Écrire un Écouteur d'. Pour utiliser le keyTyped méthode comme demandé, voir gangqinlaohu réponse.
Malheureusement, cela ne marchera pas. À l'intérieur de la keyTyped() la méthode, ke.getKeyCode() n'a pas de valeur. Et parfois, il est utile d'être en mesure de dire si ces personnages sont typés à l'intérieur de keyTyped(). Une autre façon de le faire est de faire un booléen qui est marqué dans l'keyReleased() la méthode. Je vois que maintenant, en regardant de plus près le KeyEvent la documentation javadoc. Dans le keyTyped méthode, ke.getKeyCode() retournera toujours un mot de code de VK_UNDEFINED. Je n'ai jamais utilisé keyPressed et keyReleased moi-même, donc je n'ai jamais rencontré ce problème avant. Je vous remercie pour cette. J'ai corrigé ma réponse à refléter la façon dont je l'approche de la saisie au clavier, et lié à votre solution, qui a été accepté comme la solution. keyTyped est généralement utile pour les caractères tapés. Obtenir les caractères à partir de keyReleased tendance à être plus difficile.
Quand arg0.getKeyChar() est jeté à l'int: (int)arg0.getKeyChar(), La touche retour arrière vient à la valeur de 8, et la touche Esc vient avec la valeur 27.
Je comprends que c'est un très vieux sujet, mais je voulais ajouter une réponse que j'ai trouvé m'a beaucoup aidé avec le même problème.
Je suis en train de faire un chat d'entrée pour un programme Java, et il est préférable de l'utiliser KeyTyped plutôt appuyé et relâché (comme il a exclu la nécessité de filtrer la plupart des caractères). De toute façon, je voulais faire de retour arrière supprimer des caractères, mais le .getKeyCode() retourne toujours 0 comme par la documentation. Toutefois, vous pouvez utiliser .getKeyChar() retourne le caractère (probablement apparaître comme une boîte carrée), et le caractère d'échappement '\b' pour faire une comparaison.
Seulement pour java 7 /jdk1.7 et ci-dessus: Dans le cas où vous vérifiez contre event.getKeyCode(), essayez de le event.getExtendedKeyCode() méthode. Dans le cas de l'espace il sera de retour le bon code (dans ce cas, 8) au lieu d'un simple 0. De cette façon, il n'est pas nécessaire de vérifier contre \b:
Personnellement, je préfère utiliser le KeyPressed événement pour clés autres que les lettres/chiffres, comme lorsque vous tapez la touche retour arrière ou les touches Entrée, rien n'est fait tapé par dire. Voici ce que j'ai fait qui a travaillé (assurez-vous du mot de Code et KeyEvent sont importés de javafx.de la scène.d'entrée)!
En supposant que vous avez joint le KeyListener correctement et ont mis en œuvre les méthodes nécessaires pour que KeyListener, pour détecter clé spécifique-presses de simplement ajouter le code suivant:
La KeyEvent la documentation javadoc de la classe peut être trouvé sur le lien suivant: KeyEvent javadoc.
Vous y trouverez une liste de tous les virtuelle Java de celles utilisées pour détecter l'entrée de clavier lors de l'implémentation de Java KeyListeners et KeyEvents. Plus d'informations sur KeyListeners peut être trouvé ici: Comment Écrire un Écouteur d'. Pour utiliser le keyTyped méthode comme demandé, voir gangqinlaohu réponse.
Je vois que maintenant, en regardant de plus près le KeyEvent la documentation javadoc. Dans le keyTyped méthode, ke.getKeyCode() retournera toujours un mot de code de VK_UNDEFINED. Je n'ai jamais utilisé keyPressed et keyReleased moi-même, donc je n'ai jamais rencontré ce problème avant. Je vous remercie pour cette. J'ai corrigé ma réponse à refléter la façon dont je l'approche de la saisie au clavier, et lié à votre solution, qui a été accepté comme la solution.
keyTyped est généralement utile pour les caractères tapés. Obtenir les caractères à partir de keyReleased tendance à être plus difficile.
OriginalL'auteur BMFredrick
http://www.fileformat.info/info/unicode/char/8/index.htm
Quand
arg0.getKeyChar()
est jeté à l'int:(int)arg0.getKeyChar()
, La touche retour arrière vient à la valeur de 8, et la touche Esc vient avec la valeur 27.OriginalL'auteur Justin
Je comprends que c'est un très vieux sujet, mais je voulais ajouter une réponse que j'ai trouvé m'a beaucoup aidé avec le même problème.
Je suis en train de faire un chat d'entrée pour un programme Java, et il est préférable de l'utiliser KeyTyped plutôt appuyé et relâché (comme il a exclu la nécessité de filtrer la plupart des caractères). De toute façon, je voulais faire de retour arrière supprimer des caractères, mais le .getKeyCode() retourne toujours 0 comme par la documentation. Toutefois, vous pouvez utiliser .getKeyChar() retourne le caractère (probablement apparaître comme une boîte carrée), et le caractère d'échappement '\b' pour faire une comparaison.
OriginalL'auteur Sh4d0wsPlyr
Seulement pour java 7 /jdk1.7 et ci-dessus: Dans le cas où vous vérifiez contre
event.getKeyCode()
, essayez de leevent.getExtendedKeyCode()
méthode. Dans le cas de l'espace il sera de retour le bon code (dans ce cas, 8) au lieu d'un simple 0. De cette façon, il n'est pas nécessaire de vérifier contre\b
:OriginalL'auteur spaceemotion
Vous pouvez également utiliser
e.getExtendedKeyCode()
danskeyTyped
et elle retourne une valeur non-nulle qui semblent correctes.OriginalL'auteur EntangledLoops
Personnellement, je préfère utiliser le KeyPressed événement pour clés autres que les lettres/chiffres, comme lorsque vous tapez la touche retour arrière ou les touches Entrée, rien n'est fait tapé par dire. Voici ce que j'ai fait qui a travaillé (assurez-vous du mot de Code et KeyEvent sont importés de javafx.de la scène.d'entrée)!
Laissez-moi savoir si cela a fonctionné pour vous 🙂
OriginalL'auteur Josh Narsu
Découvrez ci-dessous le code, j'espère qu'il va travailler pour vous.
OriginalL'auteur BennyVirus_