tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
610
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Fabiian Fabiian ist offline Grünschnabel
    Registriert seit
    Oct 2010
    Beiträge
    2
    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
    Geändert von Fabiian (19.10.10 um 18:10 Uhr)
     

  2. #2
    Fabiian Fabiian ist offline Grünschnabel
    Registriert seit
    Oct 2010
    Beiträge
    2
    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.
     

Ähnliche Themen

  1. Kein paint()-Aufruf mehr durch repaint() nach Hinzufügen eines Dialogs
    Von Captain Code im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 23.10.07, 14:32
  2. LAN-Verbindung durch Windows-Firewall blockiert?
    Von daniel222 im Forum Netzwerke
    Antworten: 1
    Letzter Beitrag: 05.07.07, 02:57
  3. repaint wird trotz Thread nicht ausgeführt
    Von tobitobsen82 im Forum Java
    Antworten: 10
    Letzter Beitrag: 16.06.07, 13:42
  4. Zugriff auf JFrame in eigenem Thread?
    Von DarthShader im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 04.04.07, 10:08
  5. Durch JRadioButton neues Objekt eines JFrame erzeugen
    Von the_skywalker im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 21.01.05, 10:37

Stichworte