Problemas com eventos de teclado

Ola galera, sou novo aqui no forum e estou com uma duvida em relaçao a eventos de teclado, um simples KeyTyped nao está funcionando não sei porque. Vejam só o código:

public class Teclado implements KeyListener{
        public void keyTyped(KeyEvent e){
            int key = e.getKeyCode();
            if(key == KeyEvent.VK_NUMPAD1){  
                JOptionPane.showMessageDialog(null, "testando");
            }
        }
        public void keyPressed(KeyEvent e){}
        public void keyReleased(KeyEvent e){}
}

e estou criando um objeto em relação a classe Teclado assim:

Teclado acaoTeclado = new Teclado();
addKeyListener(acaoTeclado);

Simplesmente nao está funcionando, qual seria o erro?

Obrigado, abraços

Aparentemente nenhum.

O objeto que recebe os eventos de teclado está no foco?

como assim no foco cara?

eu fiz com getKeyChar() dae deu certo, só tem um problema, quando acontece um evento de botão, os eventos de teclado nao funcionam mais, oq poderia ser?

Segue abaixo referencia ao código, essas sao subclasses de eventos, o erro pode estar aí então? Alguém me da uma luz?

http://phpfi.com/205605

Abraços

Os eventos de teclado só funcionam quando eu clico sobre o JTextField, caso contrário não funcionam. O que está errado?

Isso que eu queria dizer com “no foco”. hehehehe

Seus eventos estão registrados para o JTextField. O que exatamente você quer fazer? Quando você quer disparar o evento?

Tipo é uma calculadora o programa, eu só quero qndo digitar no teclado apareça o numero no JTextField, assim como qndo eu clico nos botoes, só q sem ter q clicar no JTextField pra isso poder funcionar.

Porque se eu nao colocar a chamada la
texto.addKeyListener(acaoTeclado);

Dae nem clicando funciona, essa parte eu nao entendi como que funciona, procurei na net mas tem exemplos simples sem que ocorra eventos de botoes junto.

assim que eu estou criando os objetos

ButtonHandler acaoBotao = new ButtonHandler();
        for(int i=0; i<nomes.length; ++i)
            botoes[i].addActionListener(acaoBotao);
        sobre.addActionListener(acaoBotao);
        texto.addActionListener(acaoBotao);
        
        Teclado acaoTeclado = new Teclado();
        texto.addKeyListener(acaoTeclado);

ta certo isso?

texto eh o JTextField la

Se você está fazendo uma calculadora, o jeito mais fácil e correto é trabalhar com InputMap e ActionMap.

Dá uma olhada nesse post:
http://www.guj.com.br/posts/list/47289.java#258583

Você também pode ver mais informações sobre essas classes aqui:
http://java.sun.com/products/jfc/tsc/special_report/kestrel/keybindings.html

hmm legal kra, mas acabei fazendo diferente, coloquei um FocusListener q ficou assim:

public class Focus implements FocusListener{
        public Focus(){
            for(int i=0; i<nomes.length; ++i)
                botoes[i].setFocusable(false);
            texto.setFocusable(true);
        }
        public void focusGained(FocusEvent e) {}
        public void focusLost(FocusEvent e) {}
}

assim o foco fica no JTextField automaticamente =)

mas vlw de qualquer jeito