Porque o KeyListener não está funcionando?

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) {}
		});
	}
}

Resolvi meu problema usando this.JFrame.requestFocus();