Niedziałający KeyListener

Niedziałający KeyListener
PO
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:15
0

Mam przykładową klasę:

Kopiuj
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?

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Przecież tej ramki nie wyświetlasz

Kopiuj
setVisible(false);

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
PO
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:15
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 ?

C1
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 7 lat
  • Postów:72
1

moze spróbuj dodać setFocusable(true)

PO
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 10 lat
  • Postów:15
0

Dzięki, działa :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.