zu späte aktualisierung/repaint

Status
Nicht offen für weitere Antworten.

Chuck Norris

Mitglied
Ich habe folgendes Problem.
Bin gerade daran ein VierGewinnt Programm in Java zu schreiben, hab dazu eine GUI mit Swing erstellt und eine KI mit einem alpha-beta Algorithmus.
es folg ein kurzer schematischer auszug aus dem hauptprogramm:

Ablauf eines Spiels:

Code:
Stein setzen;
Rufe Grafikroutine auf um gesetztes Feld neu zu zeichnen
Grafikroutine ruft das einzelne Feld auf und gibt ihm die Anweisung seinen zustand zu ändern
berechne nächsten Zug des PC.

das problem: nach der eingabe eines zuges durch den benutzer, wird das feld nicht neu gezeichnet. Das heisst die methoden und alles werden aufgerufen, aber es tut sich nichts. die neue spielsituation erscheint erst, wenn auch der computer gezogen hat! und da das bei hoher suchtiefe ziemlich lange dauert, ist das ein ernstes Problem.

Zusammenfassend:
wenn ich als benutzer einen stein in spalte 3 werfen will, erscheint dieser erst mit dem nächsten Zug des Computers, und das kann ziemlich lange dauern.

weiss jemand, wie ich erzwingen kann, das die paint() methode auch wirklich das feld neu zeichnet, bevor weiter gespielt wird?
ich habe schon sehr viel probiert, spricht überall sleeps eingefügt. hat nichts gebracht.

Ich programmiere unter linux mit java 1.5. Falls noch weitere angaben nötig sind, oder ganze teile des codes erwünscht sind, werde ich die gerne posten, aber ich finde es immer abschreckend, wenn in einem thread gleich ma 1000 code-zeilen folgen.

Freue mich über jede antwort[/code]
 
B

Beni

Gast
Mit deinen Berechnungen blockierst du den EventDispatcher-Thread. "repaint" sagt dem EDT lediglich, dass im nächsten Zyklus neu gezeichnet werden soll, aber dazu muss der aktuelle Zyklus erstmal beendet werden.

Abhilfe kann hier ein zusätzlicher Thread schaffen, der die Berechnungen der KI ausführt. Dein Programm hat dann die Form:
Code:
Stein setzen
Neuzeichnen-Befehl abschicken
KI-Thread starten
Neuzeichnen          Rechnen
Warten                 Rechnen
Ergebnis des KI-Threads übertragen, wenn er fertig ist.
 

Chuck Norris

Mitglied
danke viel mal für die antwort. das werde ich gleich mal versuchen.
was ich nicht ganz verstehe: warum hat er dann nicht neu gezeichnet, wenn ich eine sleep anweisung von 10 sekunden gemacht habe?

edit: es funktioniert!!!
danke viel mal, ich glaube ich habe ein neues lieblingsforum gefunden :wink:
 
B

Beni

Gast
Weil du mit dem sleep (höchstwahrscheinlich) den EDT schlafen gelegt hast. Wenn er schläft, kann er nicht zeichnen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M TableView + Datenbank Aktualisierung AWT, Swing, JavaFX & SWT 4
N Aktualisierung des Fensters AWT Java ohne Ruckeln AWT, Swing, JavaFX & SWT 3
P Aktualisierung von jLabel in jFrames AWT, Swing, JavaFX & SWT 8
O JavaFX Aktualisierung der Scene AWT, Swing, JavaFX & SWT 1
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
F Textfeld Währungszahlen und automatische Aktualisierung AWT, Swing, JavaFX & SWT 14
J Denkfehler bei Aktualisierung eines GUI AWT, Swing, JavaFX & SWT 4
S JTable nach aktualisierung - neue Zeile nicht "klickbar" AWT, Swing, JavaFX & SWT 0
T Tetris - Gui Aktualisierung AWT, Swing, JavaFX & SWT 2
Y JFormattedTextfield - Aktualisierung und Beschränkung AWT, Swing, JavaFX & SWT 4
dzim TableView - keine Aktualisierung geänderter Items AWT, Swing, JavaFX & SWT 5
B Aktualisierung einer JList AWT, Swing, JavaFX & SWT 5
D JTable Aktualisierung nach hinzufügen eines Datensatzes AWT, Swing, JavaFX & SWT 7
B Problem bei der Aktualisierung des Frames AWT, Swing, JavaFX & SWT 6
lumo SWT Resize und aktualisierung der gui AWT, Swing, JavaFX & SWT 6
B GUI Aktualisierung aus/und eventListener AWT, Swing, JavaFX & SWT 3
S Swing Aktualisierung Fensters AWT, Swing, JavaFX & SWT 7
K Modaler Dialog aber trotzdem Aktualisierung des MainFrames AWT, Swing, JavaFX & SWT 6
W Swing Aktualisierung des Bildes AWT, Swing, JavaFX & SWT 4
C JTable-Aktualisierung leidiges Thema AWT, Swing, JavaFX & SWT 18
Plastagen JTextArea CaretPosition Aktualisierung AWT, Swing, JavaFX & SWT 10
C permanente aktualisierung der Koordinaten der Maus auf einem Panel AWT, Swing, JavaFX & SWT 8
U JComboBox: (Vor)auswahl nach Aktualisierung AWT, Swing, JavaFX & SWT 2
kodela Swing Problem mit sofortiger Aktualisierung eine Textfeldes AWT, Swing, JavaFX & SWT 8
J Progressbar aktualisierung nach file übergabe AWT, Swing, JavaFX & SWT 7
T Aktualisierung einer JComboBox -> RepaintProblem! AWT, Swing, JavaFX & SWT 3
H Aktualisierung Gui AWT, Swing, JavaFX & SWT 5
G Bessere Aktualisierung eines Frames AWT, Swing, JavaFX & SWT 5
P Problem bei Aktualisierung eines JPanels AWT, Swing, JavaFX & SWT 2
S Aktualisierung der GUI AWT, Swing, JavaFX & SWT 6
S Aktualisierung in regelmäßigen Abständen AWT, Swing, JavaFX & SWT 2
L Problem mit der aktualisierung von JTree und Text Area AWT, Swing, JavaFX & SWT 22
F Aktualisierung während MOUSE_PRESSED AWT, Swing, JavaFX & SWT 4
M swt - problem mit aktualisierung des tableeditors AWT, Swing, JavaFX & SWT 3
G Aktualisierung der Ausgabe in SWT AWT, Swing, JavaFX & SWT 2
A Aktualisierung eines Bildes innerhalb einer Komponente AWT, Swing, JavaFX & SWT 7
A JTable - Aktualisierung und Spaltenbreite AWT, Swing, JavaFX & SWT 5
D Aktualisierung von GUI AWT, Swing, JavaFX & SWT 11
W JTextArea als Logausgabe und Aktualisierung AWT, Swing, JavaFX & SWT 3
X Probleme mit aktualisierung durch Repaint() Methode AWT, Swing, JavaFX & SWT 3
R Thread-Problem (Aktualisierung von JLabel-Komponente) AWT, Swing, JavaFX & SWT 9
M problem mit textfield-aktualisierung AWT, Swing, JavaFX & SWT 4
G JScrollPane problem mit aktualisierung der daten AWT, Swing, JavaFX & SWT 3
L Aktualisierung bei JTabbedPane AWT, Swing, JavaFX & SWT 3
T Swing bei Realtime-Aktualisierung zu langsam? AWT, Swing, JavaFX & SWT 10
M JCombobox aktualisierung, beim wecheseln des Tab JTabbedPane AWT, Swing, JavaFX & SWT 3
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
D JUNG Repaint function does not work AWT, Swing, JavaFX & SWT 2
E repaint Probleme AWT, Swing, JavaFX & SWT 13
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
L Swing repaint() ruft paintComponent(g1d) nicht auf AWT, Swing, JavaFX & SWT 12
G Repaint wird nicht durchgeführt AWT, Swing, JavaFX & SWT 8
I Swing Verhindern, dass repaint() kaskadiert AWT, Swing, JavaFX & SWT 6
ms_cikar Update swingUtilities Repaint in der Schleife AWT, Swing, JavaFX & SWT 3
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
N Swing JButtons werden nach repaint() doppelt dargestellt AWT, Swing, JavaFX & SWT 12
K Methode repaint() AWT, Swing, JavaFX & SWT 1
B Swing Wann brauche ich repaint() ? AWT, Swing, JavaFX & SWT 1
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
A repaint(); AWT, Swing, JavaFX & SWT 9
J Swing ungewünschter Nebeneffekt bei der repaint() Methode AWT, Swing, JavaFX & SWT 3
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
S 2D-Grafik repaint()-Aufruf. Und nichts geschieht. AWT, Swing, JavaFX & SWT 5
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
P JPanel und Repaint AWT, Swing, JavaFX & SWT 5
J JavaFX Automatisches Neuzeichnen ("Repaint") abstellen. AWT, Swing, JavaFX & SWT 10
F JTable Repaint Issue AWT, Swing, JavaFX & SWT 1
N Observer: update ruft nicht repaint auf AWT, Swing, JavaFX & SWT 0
C Repaint() funktioniert nicht in TabbedPanel AWT, Swing, JavaFX & SWT 5
S JList repaint AWT, Swing, JavaFX & SWT 1
L NullpointerException und Probleme mit repaint() AWT, Swing, JavaFX & SWT 11
M Repaint mittels Button richtig aufrufen klappt nicht AWT, Swing, JavaFX & SWT 1
B Repaint auf JFrame, JLabel und ImageIcon AWT, Swing, JavaFX & SWT 4
K 2D-Grafik Paint - Wie binde ich repaint ein? AWT, Swing, JavaFX & SWT 8
D repaint() klappt anders als vorgestellt AWT, Swing, JavaFX & SWT 15
R Repaint() in Schleifen, Threads AWT, Swing, JavaFX & SWT 13
B Swing Repaint Problem - mal wieder AWT, Swing, JavaFX & SWT 5
P 2D-Grafik Gezielter Repaint einzelner Frames in Java-Game AWT, Swing, JavaFX & SWT 6
javampir Bei repaint nix los AWT, Swing, JavaFX & SWT 2
B Swing repaint() AWT, Swing, JavaFX & SWT 3
Ernesto95 AnimationLoop - Problem bei Aufruf von repaint AWT, Swing, JavaFX & SWT 6
P 2D-Grafik repaint(); steigender RAM Verbauch AWT, Swing, JavaFX & SWT 6
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
S Applet Repaint AWT, Swing, JavaFX & SWT 3
M Programm hängt sich auf nachdem repaint() benutzt wurde AWT, Swing, JavaFX & SWT 2
R Swing Grafikfehler bei repaint AWT, Swing, JavaFX & SWT 2
N repaint() blockieren AWT, Swing, JavaFX & SWT 6
K canvas zeig nach repaint nichts an AWT, Swing, JavaFX & SWT 8
M Repaint() AWT, Swing, JavaFX & SWT 14
J Swing repaint, repaint, repaint AWT, Swing, JavaFX & SWT 8
M Applet repaint() verlangsamen AWT, Swing, JavaFX & SWT 7
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
P EDT Problem? Kein Aufruf der repaint Methode AWT, Swing, JavaFX & SWT 6
V Applet JApplet Flackern durch Repaint AWT, Swing, JavaFX & SWT 11
kodela Problem mit repaint() AWT, Swing, JavaFX & SWT 3
N Swing Funktion repaint() updated nicht AWT, Swing, JavaFX & SWT 5
F repaint reagiert nicht AWT, Swing, JavaFX & SWT 8
S AWT Probleme mit repaint() AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben