Probelema com keylistener

galera por q quando pressiono as teclas , o key listener não reconhece a tecla?

// classe game 
public Game() {

		initFrame();
		image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
		gf = new GerenciadorFases();
	

	}

	public void initFrame() {

		frame = new JFrame("MLS-GM");
		frame.setPreferredSize(new Dimension(this.WIDTH * scale, this.HEIGHT * scale));
		
		frame.add(this); // Adciono o canvas, e outros posiveis componentes a JF
		

		this.setFocusable(false);
		this.addKeyListener(gf); // Adiciona o KeyListener ao canvas
		
		
		frame.setResizable(false);
		frame.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("")));
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		
	}
//classe gerenciador de fases
public class GerenciadorFases implements KeyListener{

	public static final int quantFases = 2;
	public static Fase[] fases = new Fase[quantFases];
	public static int faseAtual = 0;
	
	public GerenciadorFases() {
		fases[0] = new Inicio();
		
	}
	
	public static void setFase(int fase) {
		
	 faseAtual = fase;
	 fases[faseAtual].init(); // Inicializa a fase
	
	}
	
	public static Fase getFase() {
		
		return fases[faseAtual];
	}
	
	public void update() { // ou tick
		
		fases[faseAtual].update();
	}
	
	public void render(Graphics g) {
		fases[faseAtual].render(g);
	}

	@Override
	public void keyTyped(KeyEvent e) {
		
	}

	@Override
	public void keyPressed(KeyEvent e) {
fases[faseAtual].keyPressed(e.getKeyCode());
		
	}

	@Override
	public void keyReleased(KeyEvent e) {
		fases[faseAtual].keyRealessed(e.getKeyCode());
		
	}
	
}
public class Inicio implements Fase {
	Font fonte ;
	
	
	@Override
	public void init() {
		
		//fonte = new Font("Dialog",Font.PLAIN,40);
		
	}
	


	@Override
	public void update() { // ou tick
		fonte = new Font("Dialog",Font.PLAIN,40);
	
		
	}

	@Override
	public void keyPressed(int cod) {
		
		// POR que nao aparece?????????????
		System.out.println("Apertei: "+cod);
		
	}
public interface Fase {

	void init();

	void update(); // ou update ou atualizar

	void render(Graphics g);

	void keyPressed(int cod);

	void keyRealessed(int cod);

}

Tira o setFocusable(false), se um componente não recebe foco, ele não vai responder ao pressionamento de teclas.

1 curtida