KeyListener repeater
-
Moin zusammen,
kurze Frage ist es möglich, irgendwie die Verzögerung bei gedrückter Taste abzuschalten?
Ich habe einen Punkt den ich mit den Pfeiltasten herum bewegen will. Das Problem ist aber der er sich erst um einen Pixel bewegt, dann etwas wartet und erst dann in eine konstante Bewegung übergeht.Danke
-
Entweder in der Systemsteuerung deines BS oder
mit Java-Bordmitteln indem du deiner Komponente
einen eigenen KeyListener verpasst, der in der
Methode keyPressed() einen Thread startet der nach
von dir gewünschter Wartezeit einen weiteren Thread
startet der dann deine Repeat-Funktionalität erfüllt.Diesen zweiten Thread beendest du dann in der
Methode keyReleased.
-
Und wenn keyRekeased vor dem Threadstart kommt, dann bewegt sich der Punkt von alleine.
-
Ich habs jetzt umgebaut und setze einen boolean für den entsprechenden Key, scheint ganz gut zu klappen und funktioniert auch mit meheren Keys gleichzeitig.
Mir ist aber aufgefallen, dass wenn ich in das Fenster klicke (mit der Maus)
dass gar kein Key mehr reagiert und die MouseEvents auch nichts machen.
Habe ich das ganze an ein falsches Objekt gepappt?
Mein Fenster ist ein JFrame in welches dann noch eine Canvas gestopft wird.
Muss ich das ganze an die Canvas oder ans JFrame hängen?Danke
-
Okay, habs rausgefunden. Ich musste den KeyListener und MouseListener an die Canvas ranhängen, nicht ans JFrame. Komischerweise ging es auch nicht als ich versucht habe die Listener an die GlassPane des JFrames zu pappen...
vielleicht kann mir das mjemand erklären wieso?Danke