Den Event-Dispatch-Thread anhalten, so wie es setVisible macht (modale JDialoge)

DarthShader

Erfahrenes Mitglied
Hallo,

ich würde gerne eine Animation auf einem Swing Fenster (JFrame) ablaufen lassen. Zunächst einmal handelt es sich lediglich um ein JPanel, welches einmal auf der x-Achse von links nach rechts bewegt wird.

Mein eigentliches Problem dabei ist, dass ich das Programm gerne anhalten/blockieren würde, bis die Animation fertig ist. Vergleiche ich das mit der setVisible-Methode bei modalen Dialogen, so müsste es ja ähnlich funktionieren, ähnliches diesem Beispiel:

Java:
// Dies hier ist der Event-Dispatch-Thread

meineAnimation.execute();

// Der folgende Code wird erst ausgeführt, wenn die Animation zu Ende ist

tueEtwasNachDerAnimation();

"meineAnimation" ist nun ein SwingWorker, also die typische Klasse die man nimmt, wenn bei Swing irgendwas längeres im Hintergrund laufen soll.

Das schwierige ist nun: da es sich um den Event-Dispatch-Thread handelt, kann ich den nicht einfach schlafen legen, da ja sonst keine Ereignisse mehr verarbeitet werden. Aber so klappt es ja auch mit setVisible und einem JDialog, denn dort macht Java einen neuen Event-Pump auf (steht so in der Doku zu setVisible), sodass trotzdem noch Ereignisse verarbeitet werden.

Ich hoffe, ich konnte die Problematik verständlich beschreiben. Weiß jemand hier einen Rat, wie ich die Ausführung korrekt an der Stelle anhalten kann ohne dass ich das Programm/die GUI blockiere? Vielleicht versteht ja sogar jemand, wie genau das mit dem setVisible bei modalen JDialogen funktioniert.


Danke für Eure Hilfe!
 
Zurück