Swing Gui Aktionen verlangsamen

ScorixEar

Mitglied
Hallo Leute,
Ich programmiere gerade an einem Programm, dass das mathematische Problem Türme von Hanoi löst (bzw ich bin schon fertig). Mein Problem ist die Geschwindigkeit. Ich würde gerne das Programm in einem Vortrag verwenden und auch die Zwischenschritte erklären. Es soll also eine Verzögerung zwischen den einzelnen Schritten da sein. mit Thread.sleep() oder wait() funktioniert dies nicht, da ich zu Lösung des Problems ein Rekursive Methode benutzte.
Habt ihr Ideen wie ich zwischen jeden Arbeitschritt eine Pause einlegen kann? Wenn ich wait benutzte, hält der Computer die gesamte Zeit an bis alles fertig ist und zeigt mir dann das Ergebnis ohne Zwischenschritte.
Lg Paul
 

Tobse

Top Contributor
Du musst die Rekursion so aufbauen, dass die einzelnen schritte durch ein Event aus der GUI (z.B. Action-Event eines Buttons) ausgelöst werden können; es empfiehlt sich daher auch, das iterativ zu lösen.

EDIT:
Andere Option: mach von jedem Schritt einen Screenshot - dann kannst du die in der PowerPoint einfach durchklicken
 

ScorixEar

Mitglied
Das ist es ja, ich sehe nicht mal die einzelnen schritte. Der Sinn dahinter liegt ja, dass das rekursiv gelöst werden soll, weil es um Sortierstrukturen geht und ich die Baumstruktur habe.
Nur kann ich das so ja nicht vorstellen.
 

Thallius

Top Contributor
Mach ein sleep von einer 1/10 sekunde rein und mach dann ein Video davon. Dann hast du jeden Schritt als Bild und kannst Dir das Video zurechtschneiden wie du es brauchst.

Andere Möglichkeit ist die REkursionen mitzuzählen und bei Rekursion X dann halt einen sleep oder wait. Nur must du dann in langer Kleinarbeit herausfinden welcher Schritt das jeweils ist.

Gruß

Claus
 

ScorixEar

Mitglied
Ich will das Programm ausführen und keine Fotomontage machen. Und wie gesagt, ein Sleep in die Rekursion bringt nichts, da sich die einzelnen Sachen aufaddieren und am Ende man nur den Anfang und dann das Ergebnis sieht
 

Thallius

Top Contributor
Das ist doch blödsinn. Wenn Du in Deiner rekursiven Methode ein slepp machst, dann wird auch jeder einzelne Schritt gezeigt. Nur sind das dann tausende und nicht die paar die du haben willst.
 

Tobse

Top Contributor
Das ist doch blödsinn. Wenn Du in Deiner rekursiven Methode ein slepp machst, dann wird auch jeder einzelne Schritt gezeigt. Nur sind das dann tausende und nicht die paar die du haben willst.
Ich denke es ist wichtig zu sagen, dass die Rekursion und die GUI in separaten Threads laufen müssen, damit das funktioniert. Andernfalls tritt genau der vom TE beschriebene Effekt auf.
 

ScorixEar

Mitglied
Wie kann ich die Rekursion in einem Separaten Thread laufen lassen? Muss ich dazu sie in einer anderen Klasse ausführen? Und ich möchte nicht irgendwelche bestimmten sondern alle tausend einzelne Stationen, die aber nicht kommen, also kein Blödsinn @Thallius
 

Ähnliche Java Themen

Neue Themen


Oben