Niedziałający KeyListener

0

Mam przykładową klasę:

public class Framee extends JFrame implements KeyListener{ 
public Framee() {
        setSize(400,200);
	setLayout(null);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setVisible(false);
	addKeyListener(this);
}
@Override
	public void keyPressed(KeyEvent e) {
		int code = e.getKeyCode();
		if (code == KeyEvent.VK_G) dispose();
		
	}

	@Override
	public void keyReleased(KeyEvent e) {
		int code = e.getKeyCode();
		if (code == KeyEvent.VK_G) dispose();
		
	}

	@Override
	public void keyTyped(KeyEvent e) {
		int code = e.getKeyCode();
		if (code == KeyEvent.VK_G) dispose();
		
	}
}

Mimo takiego zapisu, przy naciśnięciu klawisza G, czy obojętnie jakiego innego bym tam nie zadeklarował, nic się nie dzieje. Wie ktoś dlaczego?

0

Przecież tej ramki nie wyświetlasz

setVisible(false);

zatem nie możesz na nią przenieść fokusu. Zdarzenia klawiatury docieraja do elementów mających aktualnie fokus.

0

Ale to jest część większej aplikacji, która dopiero po naciśnięciu przycisku zmienia widoczność na true. A to okienko i tak jest widoczne. Jakieś inne sugestie ?

1

moze spróbuj dodać setFocusable(true)

0

Dzięki, działa :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1