JFrame repaint durch anderen Thread blockiert

Fabiian

Grünschnabel
Hallo,
ich habe das Problem, dass mein JFrame nicht repaintet, sprich die ContentPane bleibt weiß.
Ich will gerade ein Spiel programmieren, bei dem ein Objekt der Klasse Spieler bei einem Objekt, das die Referenz auf das JFrame enthält, die Methode gibSpielzug() aufruft, die einen Objekt der Klasse Spielzug zurückliefern soll.
Diese Aufgabe wollte ich lösen, indem in der Methode gibSpielzug() die Methode wait() an einem Object, das speziell zur Synchronisation ist, ausführt, sodass gewahrtet wird, bis eine entsprechende Aktion beim Fenster erfolgt ist und dann wird ein Spielzug-Objekt zurückgeliefert. Die zum wait()-Aufruf entgegengestellte notify()-Anweisung an dem Synchronisations-Objekt wird in einer actionPerformed()-Methode ausgeführt, wenn eine korrekte Aktion am Fenster ausgeführt wurde und hier wird dann auch die Spielzug-Variable gesetzt.
Jedoch wirkt die repaint()-Methode am Fenster nicht und es bleibt weiß, vermutlich weil duch das wait() der Thread gesperrt wird. Aber eigentlich müsste das JFrame doch in einem eigenen Thread arbeiten und somit sollte die vorher ausgeführte repain()-Anweisung Wirkung zeigen.

Da der Text so lang ist, hier nochmal ein Klassen- und Sequenzdiagramm der beteiligten Bereiche:
http://img40.imageshack.us/img40/2368/diagramme.png

Weiß jemand, wie ich das Problem beheben kann?

MfG
Fabiian
 
Zuletzt bearbeitet:
Ich hab den Fehler gefunden.
Ich hatte das Spiel aus einer actionPerformed-Methode eines anderen JFrames gestartet, aber nicht als Thread. Dadurch lief während der Ausführung noch die ganze Zeit die actionPerformed Methode und somit war vermutlich der AWT-Thread blockiert. Jetzt implementiert das Spiel das Interface Runnable und beim Starten innerhalb der actionPerformed-Methode wird dorthin zurückgekehrt und diese kann abgeschlossen werden.
 
Zurück