Keylistener in einer Schleife

Gooner85

Mitglied
Ist es möglich, die "keypressed"-Methode in einer Do-While-Schleife anzuwenden, sodass die Schleife erst weiter läuft, wenn eine Taste gedrückt wurde?
 

Atze

Top Contributor
du lässt ne while(true) laufen, und brichst aus, wenn der button gedrückt wurde

*edit*:
vielleicht mit nem sleep, damits nicht zu performancelastig wird ;)
 

Gooner85

Mitglied
Ja, so einen Ansatz dachte ich mir auch schon...funktioniert nur leider nicht.

Code:
		System.out.println("Bitte betaetigen Sie die Steuerungstaste");
		while (true)
		{
		new schildkroetenjagd_tasten();
		Thread.sleep(3000);
		break;
		}

Es kommt dabei kein flüssiger Ablauf zustande.
 

function

Bekanntes Mitglied
eher sowas:
Java:
while(!taste) {}
und bei einem Tastendruck änderst du taste auf false und so sprint er aus der schleife.

aber es wäre ja eleganter einen thread warten zulassen und bei tastendruck ein notify zu schicken...
 

Atze

Top Contributor
Ja, so einen Ansatz dachte ich mir auch schon...funktioniert nur leider nicht.

Code:
		System.out.println("Bitte betaetigen Sie die Steuerungstaste");
		while (true)
		{
		new schildkroetenjagd_tasten();
		Thread.sleep(3000);
		break;
		}

Es kommt dabei kein flüssiger Ablauf zustande.

was ist denn das auch für ein konstrukt? ;)
die schleife wird eh nur einmal durchlaufen, oder?
konstruktoraufruf, 3 sek warten, ausbrechen ...

aber das mit dem while(!taste) ist auch ne idee :)
 

Gooner85

Mitglied
Wenn ich das Problem mal etwas reduziere auf das Wesentlich, dann geht es eigentlich nur darum, abwechselnd eine Schildkröte (Simon) automatisch bewegen zu lassen und eine weitere Schildkröte (Alex) über Pfeiltasten zu steuern.
Warum funktioniert es auf folgende Art und Weise nicht?

Java:
import ch.aplu.turtle.Turtle;
import java.awt.*;
import java.awt.event.*;

public class Tasten
{

	public static Turtle Alex = new Turtle();
	public static Turtle Simon = new Turtle(Alex);
	
	public static void main(String[] args) throws InterruptedException
	{
		Simon.setColor(new Color(255,0,0));
		movement_alex();
	}

	public static void movement_alex() throws InterruptedException
	{
		
		KeyListener listener = new KeyListener() 
		{
		      public void keyPressed(KeyEvent e) 
		      {
		  		int keyCode = e.getKeyCode();
				
				switch(keyCode)
				{
				case KeyEvent.VK_UP:
					Alex.forward(50);
					break;
				case KeyEvent.VK_DOWN:
					Alex.back(50);
					break;
				case KeyEvent.VK_LEFT:
					Alex.left(90).forward(50);
					break;
				case KeyEvent.VK_RIGHT:
					Alex.right(90).forward(50);
					break;
				}	
		      }

			@Override
			public void keyReleased(KeyEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void keyTyped(KeyEvent e) {
				// TODO Auto-generated method stub
				
			}
		};
		Alex.addKeyListener(listener);
		movement_simon();
	}
	
	public static void movement_simon() throws InterruptedException
	{
		Simon.forward(50);
		movement_alex();
	}

}
 
S

SlaterB

Gast
funktioniert das ganze denn grundsätzlich, werden die Turtles angezeigt und ein
System.out.println("test");
ausgegeben wenn es im Listener steht, also sind diese richtig initialisiert?

teste das ganze erstmal nur mit einer Turtle, nicht zu kompliziert,

-----

immer wieder eine andere Methode aufzurufen kann übrigens bös enden,
nach ein paar tausend ineinander verschachtelten Aufrufen gibts einen StackOverflow-Abbruch

mehrmals addKeyListener(listener) aufzurufen ist auch nicht schön, die alten Listener verschwinden nicht, es werden bald mehrere gleichzeitig aktiv werden,

wenn das ganze überhaupt irgendwie funktioniert,
da du keine Kontrolle/ Pause eingebaut hast, müssten die Methoden sich sowieso von Anfang an gegenseitig endlos aufrufen,
movement_simon(); wird direkt aufgerufen, nicht etwa erst vom Listener aus nach Tastendruck,
das Programm dürfte sofort abstürzen,

das sieht ja alles düster aus, so komplizierte Dinge kann man hier kaum auf unter 10 Seiten erklären,

es gibt ein schönes ausführliches Tutorial
http://www.ralf-bauer.org/java/tutorial/Tutorial.zip
allerdings für normales Java, nicht Turtle,

wenn du das durcharbeitest, würdest du aber auch mit Turtle besser zurecht kommen
 

Gooner85

Mitglied
Wenn ich System.out.println("test"); in die "key_pressed"-Methode des Listeners einbaue, wird "test" ausgegeben, sobald ich eine Taste drücke!

Ich kann mir einfach nicht vorstellen, dass die Angelegenheit so unsagbar kompliziert ist. Immerhin hab' ich das ganze auch schon so programmiert, dass sich die zweite Schildkörte über entsprechende Befehlseingaben in der Konsole bewegt. Dabei hat das Programm auch immer auf eine Eingabe gewartet, bis es weiterlief.

Es geht doch nur darum, das Programm erst weiterlaufen zu lassen, wenn eine entsprechende Taste gedrückt wurde.

Danke für das Tutorial, vielleicht hilft es mir ja weiter.
 
S

SlaterB

Gast
> Es geht doch nur darum, das Programm erst weiterlaufen zu lassen, wenn eine entsprechende Taste gedrückt wurde.

wie leicht angedeutet sollte aus deinem Code
> movement_simon();
aus Zeile 56 in die keyPressed-Methode, Zeile 40 oder so, verschoben werden
 

Gooner85

Mitglied
Danke für diesen Tipp...
ich hab den Aufruf der "movement_simon()"-Methode jetzt an die Richtige Stelle platziert.
Jetzt funktioniert es.

Nochmals vielen Dank!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
javalux123 Keylistener auf andere Fenster Java Basics - Anfänger-Themen 3
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
M KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
M Mit KeyListener Farbe von Label ändern Java Basics - Anfänger-Themen 13
N Java Keylistener Java Basics - Anfänger-Themen 2
B KeyListener funkioniert nicht Java Basics - Anfänger-Themen 2
F KeyListener Java Basics - Anfänger-Themen 3
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
G KeyListener und JButton vertragen sich nicht Java Basics - Anfänger-Themen 1
J-Gallus Keylistener verstehen Java Basics - Anfänger-Themen 17
S Keylistener Java Basics - Anfänger-Themen 16
S Keylistener im Grafikfenster Java Basics - Anfänger-Themen 3
H Mouse- und KeyListener Probleme? Java Basics - Anfänger-Themen 5
N KeyListener in Thread Java Basics - Anfänger-Themen 0
LexeB4F for schliefe in KeyListener Java Basics - Anfänger-Themen 3
R KeyListener auslagern Java Basics - Anfänger-Themen 3
J KeyListener aus anderer Klasse bereitet Probleme Java Basics - Anfänger-Themen 1
Z KeyListener funktioniert nicht? Weshalb? Java Basics - Anfänger-Themen 8
T KeyListener Java Basics - Anfänger-Themen 2
Gfreak23 Input/Output KeyListener funktioniert auf Laptop nicht allerdings auf Tower-PC Java Basics - Anfänger-Themen 8
J KeyListener - mal wieder... Java Basics - Anfänger-Themen 2
TheSorm KeyListener Problem Java Basics - Anfänger-Themen 4
M KeyListener Java Basics - Anfänger-Themen 3
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
D KeyListener nicht mehr aktiv nach ActionPerformed Java Basics - Anfänger-Themen 2
C Mehrere Tasten beim KeyListener gleichzeitig lesen Java Basics - Anfänger-Themen 2
L Input/Output Java 3D mit KeyListener Java Basics - Anfänger-Themen 1
S KeyListener reagiert nicht. Java Basics - Anfänger-Themen 4
L KeyListener ohne textfeld Java Basics - Anfänger-Themen 4
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
P Klassen Bei KeyEvent in KeyListener den Tastendruck abbrechen Java Basics - Anfänger-Themen 5
B KeyListener als allgemeine Methode Java Basics - Anfänger-Themen 5
H KeyListener auf ganzes Fenster setzen Java Basics - Anfänger-Themen 14
0 KeyListener ausserhalb der Applikation Java Basics - Anfänger-Themen 5
G KeyListener Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
J KeyListener funtioniert nicht! Java Basics - Anfänger-Themen 3
J KeyListener Java Basics - Anfänger-Themen 11
P Input/Output KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
G KeyListener, Fokus Java Basics - Anfänger-Themen 8
K Input/Output KeyListener funktioniert nicht Java Basics - Anfänger-Themen 3
A Input/Output Keylistener Aktiv schalten Java Basics - Anfänger-Themen 8
J keyListener - Genau 1 Aktion soll bei 1 Tastenausdruck ausgeführt werden Java Basics - Anfänger-Themen 11
S KeyListener Java Basics - Anfänger-Themen 2
A Erste Schritte Problem mit KeyListener Java Basics - Anfänger-Themen 6
Maxim6394 KeyListener geht nicht Java Basics - Anfänger-Themen 15
A Wie KeyListener adden? Java Basics - Anfänger-Themen 15
Maxim6394 KeyListener funktioniert nicht Java Basics - Anfänger-Themen 20
U KeyListener StackOverflowError Java Basics - Anfänger-Themen 2
W KeyListener auf Applet mit Runnable Java Basics - Anfänger-Themen 4
M Apfel-Spiel KeyListener Java Basics - Anfänger-Themen 33
J KeyListener (keyTyped) funktioniert nicht Java Basics - Anfänger-Themen 9
Luk10 KeyListener Java Basics - Anfänger-Themen 13
S KeyListener aus anderer Klasse hinzufügen Java Basics - Anfänger-Themen 19
P KeyListener im Applet Java Basics - Anfänger-Themen 2
S KeyListener-Anwendung Java Basics - Anfänger-Themen 7
O KeyListener funktioniert nur wenn er will Java Basics - Anfänger-Themen 2
A KeyListener funzt ned Java Basics - Anfänger-Themen 6
D KeyListener, Unterscheidung Groß/Kleinbuchstaben Java Basics - Anfänger-Themen 3
S KeyListener als class? Java Basics - Anfänger-Themen 4
F Applet mit KeyListener, "Alt"-Taste und Konflikt mit Browser Java Basics - Anfänger-Themen 2
P KeyListener Java Basics - Anfänger-Themen 2
S KeyListener für einfaches Programm Java Basics - Anfänger-Themen 3
S KeyListener aktiv auch wenn minimiert? Java Basics - Anfänger-Themen 4
Z Globaler Keylistener Java Basics - Anfänger-Themen 2
V KeyListener Beispiel Java Basics - Anfänger-Themen 13
T canvas killt KeyListener Java Basics - Anfänger-Themen 2
Das Brot Nach .add(JRadioButton) funktioniert der KeyListener nicht mehr Java Basics - Anfänger-Themen 2
J Keylistener aber wie jTextField auswahl? Java Basics - Anfänger-Themen 3
D KeyListener, nichts passiert Java Basics - Anfänger-Themen 6
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
D Keylistener zu langsam Java Basics - Anfänger-Themen 7
C Problem mit JPopupMenu, JTextField und Keylistener Java Basics - Anfänger-Themen 2
M problem mit keylistener Java Basics - Anfänger-Themen 2
M TabbedPane: KeyListener funktioniert nicht mehr Java Basics - Anfänger-Themen 8
N KeyListener ohne GUI? Java Basics - Anfänger-Themen 5
M KeyListener Java Basics - Anfänger-Themen 3
T KeyListener wird nicht ausgelöst Java Basics - Anfänger-Themen 6
O KeyListener Java Basics - Anfänger-Themen 8
Developer_X KeyListener ohne JFrame Java Basics - Anfänger-Themen 13
H KeyListener Java Basics - Anfänger-Themen 4
Developer_X KeyListener Actions (hat mit Java3D zu tun) Java Basics - Anfänger-Themen 20
H KeyListener funktioniert nicht Java Basics - Anfänger-Themen 8
Developer_X JFrame soll KeyListener adden Java Basics - Anfänger-Themen 32
F Keylistener Java Basics - Anfänger-Themen 12
hdi KeyListener : keyTyped() nicht nutzbar? Java Basics - Anfänger-Themen 1
StickToFreak Runnable + KeyListener? Java Basics - Anfänger-Themen 32
dl85hej Keylistener Java Basics - Anfänger-Themen 16
H KeyListener will nicht reagieren Java Basics - Anfänger-Themen 5
R Fehlersuche - KeyListener, KeyAdaper - Nichts Klappt! Java Basics - Anfänger-Themen 2
G Prob. mit KeyListener und Unterklasse Java Basics - Anfänger-Themen 5
G Keylistener nur besimmte Zeichen zulassen Java Basics - Anfänger-Themen 8
hdi keylistener hat keinen fokus oder: listener ohne frame? Java Basics - Anfänger-Themen 10
A KeyListener funktioniert nicht Java Basics - Anfänger-Themen 7
D KeyListener Java Basics - Anfänger-Themen 7
B Keylistener auf JSpinner reagiert nicht? Java Basics - Anfänger-Themen 3
G KeyListener für die Taste "/" Java Basics - Anfänger-Themen 5
E brauche hilfe beim KeyListener Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben