Identificar pressionamento de tecla

Na minha classe que implementa KeyListener eu programo o seguinte:

public void keyPressed(KeyEvent arg0) { if(arg0.getKeyCode() == KeyEvent.VK_ESCAPE) { // faço o que quero aqui } }
Desta forma, qdo o foco estiver em qq campo que eu implementei o KeyListener, ao pressionar a tecla ESC ele executa o que eu tiver programado acima.

Mas agora, o que eu quero na verdade é identificar o pressionamento da tecla ESC (e outras teclas) dentro do JFrame que estiver ativo. A qq momento que eu pressionar ESC (por ex) quero identificar, independente de onde estiver o foco no frame.

Algo parecido com o que fazemos ao programar no KeyDown e setar pra true o KeyPreview de um formulário em Delphi.

Alguma dica? :roll:

é soh adicionar um key listener no proprio JFrame…

    addKeyListener(new java.awt.event.KeyAdapter() {
        public void keyPressed(java.awt.event.KeyEvent evt) {
            //faz o q quiser
        }
    });

Não Maurício, num é assim tão simples…

Tentei fazer oque vc falou mas não resolve. Por ex, se o foco estiver num botão qq ele não aciona, ou se estiver num JTable, ele não aciona.

Preciso de uma forma q capture a tecla independente de onde estiver o foco, não só no JFrame.

Obrigada de qq forma.

Alguém tem alguma outra idéia?! :idea:

Não sei um jeito mto pratico para isso… Acredito q só criando uma classe q extende JTextField que tenha o comportamento q você qr… Não conheço uma forma d desviar o caminho do evento para ir pro JFrame e n pro JTextField…

A maneira mais adequada para implementar hotkeys em Swing é assim:
http://www.java2s.com/Code/JavaAPI/javax.swing/JFramegetContentPanegetActionMapBindkeyactiontoJFrame.htm