Originariamente inviato da andbin
Tecnicamente sempre con keyPressed(). Solo che la questione è più particolare, perché i vari Ctrl, Alt ecc.. sono dei "modificatori" trattati in modo più specifico.
Se come sequenza fai: premo Ctrl, premo A, rilascio A, rilascio Ctrl, tecnicamente ottieni come invocazioni:
keyPressed con e.getKeyCode() = VK_CONTROL
keyPressed con e.getKeyCode() = VK_A
keyReleased con e.getKeyCode() = VK_A
keyReleased con e.getKeyCode() = VK_CONTROL
E i keyPressed si possono ripetere se tieni premuto, ovviamente.
Se devi solo "sentire" il tasto Ctrl (come se fosse un qualunque altro tasto), lo tratti nei metodi sopra come "key code".
Se devi trattarlo come "modificatore" di un altro tasto, non devi tenerti tu nessun "flag" perché avevi trovato il VK_CONTROL prima! Infatti KeyEvent ha i metodi:
- isControlDown() / isAltDown() / ecc.... isXXXDown()
- getModifiers() / getModifiersEx() per ottenere le combinazioni di flag relative a pulsanti del mouse e modificatori Ctrl ecc...
Per essere precisi, con DocumentListener non senti di per sé le pressioni dei tasti .... ricevi notifica delle modifiche, in generale, al Document, che possono avvenire in svariati modi: digitazione dell'utente, azione di "incolla", modifica da codice direttamente sul Document o attraverso il componente di testo (es. setText() ecc...).