KeyPressed and KeyTyped Confusion [duplicate]

2019-08-05 19:02发布

问题:

This question already has an answer here:

  • KeyListener, keyPressed versus keyTyped 4 answers

I have searched about difference between KeyPressedand KeyTyped Events but still I'm not clear about that . One thing I have found is Keypressed is triggered first than KeyTyped . Please clarify me when these are triggered exactly . Which is appropriate to use for which purpose ? Thanks in advance

回答1:

keyPressed is fired whenever any key press occurs. keyTyped is fired when a key is pressed that can be converted into a unicode character. If the shift key is down, for example, pressing "a" will tell keyTyped that you typed a capital A, and keyPressed will just get the "a" key, without capital or lowercase designations. You cannot call event.getKeyChar() from keyPressed, because there is no key char associated with the events. Characters only come from keyTyped.

The basic idea is that keyTyped is used to find characters that are typed, and keyPressed is used for obtain raw key presses.



回答2:

KeyPressed happens when the key goes down. KeyTyped happens when the key goes down and then back up. I'm not sure if "in rapid succession" is a requirement, and if it is, how fast "rapid" is.

Edit: KeyTyped is actually when a unicode char is sent from the keyboard. USUALLY, the key behavior is that it goes down and then back up in rapid succession.

Taken from: KeyListener, keyPressed versus keyTyped