Wiederholungsrate von Tastatureingaben früher kommen lassen

Status
Nicht offen für weitere Antworten.
R

Rapthor783

Gast
Mein Problem ist schwer zu erklären, aber im Grunde handelt es sich um eine einfache Sache, wenn ihr mich erstmal verstanden habt:

Ich implementiere einen KeyListener in meiner JAVA Applikation und die Methode keyPressed() tut etwas. Diese Sache wird jedes Mal ausgeführt wenn eine Taste gedrückt wird (auch wenn sie gedrückt gehalten wird).
Allerdings dauert mir der Zeitpunkt vom ersten Drücken einer Taste (keyPressed Methode wird das 1. Mal ausgeführt) bis zum wiederholten Drücken der Taste (geschieht ja automatisch, wenn ich gedrückt halte) einfach zu lang.
Kann man, ähnlich wie in der Windows Systemsteuerung bei den Tastatureinstellungen, diese Wiederholrate einer Taste erhöhen? Ich will erreichen, das man den Unterschied zwischen dem 1. Ausführen der keyPressed Methode und jedem Mal danach nicht mehr merkt.

Ich hoffe hier versteht jemand was ich meine :shock:
Rapthor
 
R

Rapthor783

Gast
Ohh .. nein, den kenne ich nicht. Danke für den Hinweis! Wusste bei der Suche nichts passendes einzugeben.
 

kopfsalat

Bekanntes Mitglied
Ey, ich war zuerst da :bae:

Allerdings ist Dein Problem schon ein bißchen anders. Du willst anscheinend diese Pause nicht völlig abschaffen, sondern nur verringern ?
Dazu müßtest Du entweder die Einstellung für das jeweilige Betriebssystem ändern (wüßte nicht wie), oder ähnlich zu dem im anderen Thread beschriebenen Verfahren, dir mit einem Thread selbst helfen, der dann die entsprechenden Events feuert.
Also: Tastendruk startet Thread. Tastenloslassen beendet Thread.
Im Thread: Rufe Ereignisfunktion auf, warte 100ms, rufe danach immer wiederkehrend Ereignisfunktion auf.
 
R

Rapthor783

Gast
Naja hab jetzt foglendes Problem:

Ich starte nen Thread in der keyPressed-Methode. Aber wenn ich in der run Methode jetzt ein Thread.sleep(300); einbaue, damit er nicht die ganze CPU für sich endlos in Anspruch nimmt, dann kann ich den Thread aber in der keyReleased Methode nicht mehr mittels thread1.interrupt(); beenden. Denn sleep() wirft eine InterruptedException, wenn versucht wird interrupt() auf ihn auszuführen.
Und die stop() Methode ist mir zuwider, weil ich ein moderner Mensch bin, der keine depreciated Methoden verwendet :lol:
 

Wildcard

Top Contributor
Benutz doch z.b eine Map.
In ihr speicherst du wenn eine Taste gedrückt wurde, und entfernst sie wieder wenn sie losgelassen wurde.
Dem Thread gibst du diese Map, und er handelt ja nachdem welche Taste(n) gedrückt ist(sind).
Diesen Thread kannst du die ganze Zeit laufen lassen, also kein Problem mit interrupt() mehr.
Damit hättest du dann auch das Problem gelöst das mehrere Tasten gleichzeitig gedrückt sein können.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben