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
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: