Niepoprawne przechwytywanie zdarzen klawiszy

0

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?

0

A jak uruchomisz jakiś edytor, naciśniesz klawisz (np 'd') i go przytrzymasz, to ile razy zostanie napisana litera 'd'?

0

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.

0

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.

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