JavaFX Wait/Sleep/postedDelay - Einfach nur warten

lolslax

Mitglied
Hallo zusammen,

ich habe hier ein sehr seltsamen Problem obwohl ich es in der Theorie noch nachvollziehen könnte in Sachen Threads.

Mein einfaches Problem was ich lösen möchte ist folgendes:

Das ImageView bekommt ein Bild zugewiesen und das Bild wird angezeigt.

Folgender Ablauf:

Bild 1 wird angezeigt

Warte 5 sekunden (in dieser Zeit soll das Bild 1 noch immer angezeigt werden!)

Bild 2 wird angezeigt

Warte 5 sekunden (in dieser Zeit soll das Bild 2 noch immer angezeigt werden!)

Bild 3 wird angezeigt

.
.
.

usw.

Mein Problem ist:

Wenn ich ein wait oder sleep einbaue, dann zeigt er mir kein Bild an sonder "hängt sich auf"
welches sicherlich mit dem Thread zu tun hat, da dieser angehalten wird.

Aber wie komme ich zur Lösung des oben genannten Ablaufes?

In VB.Net und anderen Sprachen hatte ich nie ein Problem mit Threads bzw. Threadübergreifende Geschichten.


Über Hilfe würde ich mich sehr freuen.

Nette Grüße
 
Zuletzt bearbeitet:
Mit sleep und wait hängst du den aufrufenden Thread für die angegebene Zeit auf. Lager das Ganze in einen weiteren Thread aus und lass diesen mit sleep warten.
 
Vielen Dank für die Antwort.

Das Auslagern in einen Thread hat leider nicht den gewünschten Erfolg gebracht.

PHP:
new Thread(new Runnable() {
     public void run() {

     try {
         showPicture(getCurrentPlayingFilename(),false);
     Thread.sleep(5000);

 } catch (InterruptedException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }


Die Methode showPicture zeigt das neue Bild an.
Leider hängt sich immer noch alles auf.

Mache ich eventuell etwas falsch ?

Gruß
 
Zuletzt bearbeitet:
Ich meinte das richtig mit einer neuen Klasse. Um die Nebenläufigkeitbeines Threads zu haben muss man ihn mit .start() starten. Dabei wird die run-Methode ausgeführt.
 
Ok, ansicht habe ich jetzt alles ausgelagert, mein Problem besteht weiterhin in folgender Exception.

Unglaublich wie schwierig so ein einfaches sleep ohne freezen der GUI sein kann.

PHP:
java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-6
java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-3
java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-5
java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-4
 

Zurück
Oben