Zalozylem na JPanel key listenera. Wczeszniej wywolalem na rzecz panelu metode setFocusable(true). W metodzie keyPressed() listenera dodalem linijke ktora pisze "pressed" i analogicznie w metodzie keyReleased(). Gdy wcisne np. strzalke na zmiane wypisuje mi w konsoli "pressed released". Dlaczego tak sie dzieje, przeciez wcale nie puszczam klawisza?
A jak uruchomisz jakiś edytor, naciśniesz klawisz (np 'd') i go przytrzymasz, to ile razy zostanie napisana litera 'd'?
To zalezy jak dlugo bede klawisz przytrzymywal. Przeciez w trakcie pojawiania sie w edytorze kolejnych liter 'd' ani razu nie puszczam klawisza wiec dlaczego to zdarzenie jest rejestrowane? Jak juz to przy kazdym wprowadzaniu litery d do edytora mogloby byc rejestrowane zdarzenie keyPressed bo caly czas go przytrzymuje ale niby dlaczego keyReleased? Zreszta na stronie oracle pisze: keyReleased(KeyEvent) Called just after the user releases a key while the listened-to component has the focus. wiec czemu mi tutaj mowisz o jakis edytorach? PS. Wlasnie przeczytalem ze ten problem wystepuje tylko na Linuxie ze wzgledu na jakis 'auto repeat feature'. To by juz wiele wyjasnialo.
Klawisza nie puszczasz, ale litera pojawia się wielokrotnie. Tak działa klawiatura, nic na to nie poradzisz. Naciśnięcie i przytrzymanie jest zamieniane na sekwencję naciśnień i puszczeń. W javie są to metody keyPressed i keyTyped.