Swing Problem bei Methodenaufruf in innerer Klasse bei Listener

El_Lobo

Mitglied
Hallo!

Ich habe ein nerviges (Anfänger-) Problem mit einem SWING-Gui. Kurz zusammengefaßt geht es um folgendes:

Die erste Klasse
Code:
Gui()
enthält u.a. einen JButton, der auf Anklicken hocht und dann die Methode
Code:
nextStep()
der zweiten Klasse
Code:
Rechner()
aufruft (Rechner Re = new Rechner()). In dieser Methode
Code:
nextStep()
werden Positionen von Objekten berechnet und in einem JFrame graphisch darstellt. Das ganze sieht etwa so aus:

Code:
Gui-Klasse (Ausschnitt):
...
Rechner Re = new Rechner();
	...
	jButton_start.addActionListener(new java.awt.event.ActionListener() {
		public void actionPerformed(java.awt.event.ActionEvent e) {
			Re.nextStep();
		}
	});

Mit jedem Mausklick wird
Code:
Re.nextStep()
ausgeführt, die Positionen ändern sich wie gewünscht - alles ist gut. Wenn ich aber statt eines einzelnen next.Step() so etwas wie

Code:
for (int i = 0; i < 12; i++){
		Re.nextStep();
}

ausführe, bekomme ich keine Zwischenschritte im JFrame der Klasse Rechner angezeigt, sondern nur die letzte Stellung bei i = 11. Richtig übel wird es mit einer while-Schleife, denn die gehorcht nicht auf die Abbruchbedingung.

1. Frage: Was passiert hier eigentlich, wieso sehe ich keine Zwischenschritte?
2. Frage: Was müßte ich tun, um eine while-Schleife zu implementieren, die z.B. mit einem Mausklick auf einen anderen JButton eine Abbruchbedingung erzeugt?

Danke schonmal für Eure Hilfe,
besten Gruß

El Lobo
 
Hey, ich denke mal Re.nextStep(); ändert den zustand des Rechners? wenn das so ist muss du natürlich der GUI bekannt machen das sich was geändert hat?
 
Es würde wahrscheinlich schon reichen, nach jedem
Code:
nextStep()
die Methoden
Java:
panel.revalidate();
panel.repaint();
von dem entsprechenden Panel aufzurufen.
Aber um das genau zu sagen, müsstest du noch mehr Quellcode posten.
 

Zurück
Oben