Aktion während gedrückter Taste

Status
Nicht offen für weitere Antworten.

yeTh7

Mitglied
Hallo!

Ich bin gerade dabei die Basics für ein kleines Spiel zu erlernen. Zu Anfang wollte ich einfach mal ein Bild je nach Tastendruck über das Panel sausen lassen.

Nun stecke ich aber ein bisschen fest.

Soweit meine Überlegungen:
Wenn eine Pfeiltaste gedrückt wird setze ich über keyPressed des KeyListeners eine boolean-Variable (zB. up) auf true. Wenn die Taste losgelassen wird, wird der boolean Wert zurück auf false gesetzt.
Jetzt möchte ich allerdings, dass sich während des Tastendruckes auch was tut, nur wie erreiche ich das?
Läuft die GUI parallel zur keyPressed()-Methode weiter (und nimmt auch ein eventuelles keyReleased() an) so dass ich dort eine Schleife ala "while(up) { do irgendwas }" implementieren kann... ?
Soll ich einen Thread erzeugen der aufgerufen wird wenn eine Taste gedrückt wird und solange läuft wie up true ist... ?

Hmm... gebt mir bitte ein paar Ratschläge, denn reste Lösungsansätze sind bis jetzt gescheitert.

Danke schon mal im Voraus!
 
Du hast doch die Lösung schon gefunden: Threads.

Wenn die Gui während der Button gedrückt ist etwas anderes machen soll, pack die andere Aktion einfach in einen Thread und starte den über Swingutilities.invokLater( myThread ).
 
Hallo!

Vielleicht hilft dir das hier weiter: Ich war vor kurzem auf der Suche nach einem Mechanismus mit dem ich global im Programm Tastatureingaben abfragen konnte. Dabei bin ich in einem englischen Forum auf das hier gestoßen:

Code:
public class MyKeyboardManager extends DefaultKeyboardFocusManager 
{
	public boolean dispatchKeyEvent(KeyEvent e)
	{
		TableController.setKeyPressed(e.isControlDown()); // Das ist meine Aktion, die bei gedrückter STRG taste
// ausgeführt werden soll. Hier musst du dann die Logik für deine Tasten implementieren.
		return super.dispatchKeyEvent(e);
	}
}

In meiner Main-Funktion stehen dann noch diese beiden Zeilen, die den KeyboardManager instanzieren und global aktivieren:

Code:
KeyboardFocusManager kbfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
		kbfm.addKeyEventDispatcher(new MyKeyboardManager());

Funktioniert wunderbar bei mir. . .

Gruß
Maik
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben