Não dá mensagem de erro nenhum, parece que é exatamente isso que o New_Radical disse: o JFrame ou JPanel não recebem foco, e por isso não ouvem nada…o código é o seguinte: (o código está feio pq é um estudo hehe)
public AplicacaoCliente (Jogador [] jogadores, int j) {
setSize(400,400);
setTitle("Teste de animação");
// guarda referência para o jogador da aplicação
jogador = jogadores[j];
// cria temporizador
timer = new Timer(33,this);
// cria painel onde o tabuleiro será desenhado
pintor = new Pintor(new Tabuleiro(jogadores));
addKeyListener(this);
// ...código de teste...
// adiciona elementos ao frame
getContentPane().setLayout(new BorderLayout());
getContentPane().add(pintor,BorderLayout.CENTER);
addKeyListener(this);
timer.start();
}
o método keyTyped segue abaixo, embora ele nem chegue a ser chamado:
public void keyTyped(KeyEvent evt) {
Movimento mov = null;
if (evt.getKeyCode() == KeyEvent.VK_UP) {
mov = new Movimento(5,jogador,0,-30);
}
else if (evt.getKeyCode() == KeyEvent.VK_DOWN) {
mov = new Movimento(5,jogador,0,30);
}
else if (evt.getKeyCode() == KeyEvent.VK_LEFT) {
mov = new Movimento(5,jogador,-30,0);
}
else if (evt.getKeyCode() == KeyEvent.VK_RIGHT) {
mov = new Movimento(5,jogador,30,0);
}
if (mov != null)
pintor.incluiMovimento(mov);
}
Com botões os movimentos funcionam perfeitamente, só que os eventos de teclado não funcionam…como na interface final eu não pretendo ter botões, quero poder tirar esses botões e “linkar” os eventos de teclado ao frame (AplicacaoCliente) ou ao painel (Pintor).