Estou fazendo um jogo e estou usando o KeyListener para movimentar o personagem, mas toda vez eu tenho que minimizar o jogo e abrir de novo para que o keylistener comece a funcionar e eu não sei porque, vou postar a classe com o problema aqui se alguém conseguir encontrar o problema eu agradeço.
Classe:
package br.paulo.game.gui;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Cenario {
private JFrame cenario;
private Path path;
private JLabel lbBackGround, lbPlayer;
private int posX, posY, altura, largura;
public Cenario(JFrame cenario) {
this.cenario = new JFrame("Zumbie");
this.cenario = cenario;
PlayerMovi();
initComponents();
}
public void initComponents() {
this.posX = 0;
this.posY = 0;
this.altura = this.cenario.getHeight();
this.largura = this.cenario.getWidth();
this.path = new Path();
this.lbBackGround = new JLabel(new ImageIcon(getClass().getResource(path.getCenario())));
this.lbBackGround.setBounds(0,0,this.largura,this.altura);
this.lbPlayer = new JLabel(new ImageIcon(getClass().getResource(path.getPlayer(5))));
this.lbPlayer.setBounds(posX,posY,31,50);
this.cenario.add(this.lbPlayer);
this.cenario.add(this.lbBackGround);
}
public void PlayerMovi() {
cenario.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == 38) {
lbPlayer.setIcon(new ImageIcon(getClass().getResource(path.getPlayer(0))));
if(posY > 0) {
System.out.println(e.getKeyCode());
System.out.println("PosY: " + posY);
System.out.println("Altura: " + cenario.getHeight());
posY -= 10;
}
}
if(e.getKeyCode() == 40) {
lbPlayer.setIcon(new ImageIcon(getClass().getResource(path.getPlayer(5))));
if(posY < 399) {
System.out.println("PosY: " + posY);
System.out.println("Altura: " + cenario.getHeight());
System.out.println(e.getKeyCode());
posY += 10;
}
}
if(e.getKeyCode() == 37) {
lbPlayer.setIcon(new ImageIcon(getClass().getResource(path.getPlayer(9))));
if(posX > 0) {
System.out.println("PosX: " + posX);
System.out.println("Largura: " + cenario.getWidth());
System.out.println(e.getKeyCode());
posX -= 10;
}
}
if(e.getKeyCode() == 39) {
lbPlayer.setIcon(new ImageIcon(getClass().getResource(path.getPlayer(13))));
if(posX < 600) {
System.out.println("PosX: " + posX);
System.out.println("Largura: " + cenario.getWidth());
System.out.println(e.getKeyCode());
posX += 10;
}
}
lbPlayer.setBounds(posX,posY,31,50);
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
});
}
}