Applet repaint() verlangsamen

Maxx2332

Mitglied
Moin,

wie zu erwarten habe ich ein neues Problem und zwar möchte ich das ein Balken aktualisiert wird mit repaint() und dann kurz gewartet wird und dann wird er nochmal aktualisiert und das immer wieder.

Java:
for(int i = 1; i <= zeitS; i++)
            {
                raeuber.leben(beute, 1);
                beute.leben(raeuber, 1);
                repaint();
                try
                {
                    Thread.sleep( 100 );
                }
                catch ( InterruptedException p )
                {
                    p.printStackTrace();
                }
                
                
            
        }

Nun ist es so das ich es halt mit Thread.sleep verzögern wollte damit man jede Veränderung sieht allerdings passiert dies nicht.


Suche und Google benutzt konnte aber keinen Zusammenhang zu meinem Problem erkennen.
 

Cola_Colin

Top Contributor
Ich vermute mal, dieser Codeausschnitt steht in repaint ?
Du musst dir klar machen, dass die Änderungen dort erst sichtbar werden, wenn die Methode komplett durchlaufen ist.
D.h. wenn du mitten in der Mitte eine Pause einbaust, dann wird der Teil davor trotzdem nicht sichtbar.
Du wirst zuerst das halbe Bild zeichnen müssen und in einem zweiten Aufruf von repaint 100ms später das ganze.

EDIT: okay, da wird repaint aufgerufen, dann steht er vermutlich in einem Button-Click oder ähnlichem ?
Der muss weg dort, das gezeichnete wird ebenso nur sichtbar, wenn eine solche Methode ganz durchlaufen ist.
 
Zuletzt bearbeitet:

njans

Top Contributor
Das sollte man dann aber nicht beim zeichnen machen!
Sinnvoller wäre wohl da ein Model zu verwenden, das den aktuellen zustand hält. Und dann dort den zustand zu ändern, wenn es dir recht ist. Anschließend einmal repaint auslösen.

Java:
model.setState(model.getState+1); // Pseudocode für: ändere den Status des Models
component.repaint(); // Neu zeichnen

// in der paintComponent methode:
state = model.getState  // Hol dir die notwenigen Daten aus dem Model
g.drawSomething(state); // zeichne, abhängig von den daten
 

Maxx2332

Mitglied
Ich vermute mal, dieser Codeausschnitt steht in repaint ?

Diesen Satz verstehe ich nicht ganz. Ich dachte repaint wäre eine eigenständige Methode die nur von meiner Methode aus aufgerufen werden soll.


Du musst dir klar machen, dass die Änderungen dort erst sichtbar werden, wenn die Methode komplett durchlaufen ist.
okay, da wird repaint aufgerufen, dann steht er vermutlich in einem Button-Click oder ähnlichem ?

Ja es ist ein Button der halt die ganze Methode startet davor ist natürlich noch was dort geht es aber nur ums erfassen der Werte.

Dann wenn ich dich richtig verstanden hab soll ich einmal vor und nach dem sleep ein repaint setzen?
Da die Methode ja erst nach der ganzen For-Schleife zu Ende wäre würde es nicht auf das gleiche hinauslaufen?



@njans

Nett gemeint versteh ich aber nicht, da dies auch mein erstes Applet ist und meine gegebenen Mittel ich sag mal sehr notdürftig sind.

Deswegen wenn du mir das per PN erklären könntest und dir auch sicher bist das es mir hilft wäre ich dir sehr verbunden.
 

Cola_Colin

Top Contributor
Vergeß das mit "im repaint", mein Fehler.
Dein Problem ist, dass du aktuell nur einen Thread hast, nämlich den EDT von Swing.
Dieser ist dafür zuständig, einerseits auf den Button zu reagieren, andererseits aber auch das Bild zu zeichnen.
Soll heißen, wenn du in der Verarbeitung des Buttons wartest, dann kann er solange auch nicht zeichnen -> du siehst nix.

Du brauchst einen eigenen Thread in dem du deinen Code mit dem sleep aufrufst.
 

njans

Top Contributor
Nett gemeint versteh ich aber nicht, da dies auch mein erstes Applet ist und meine gegebenen Mittel ich sag mal sehr notdürftig sind.

Deswegen wenn du mir das per PN erklären könntest und dir auch sicher bist das es mir hilft wäre ich dir sehr verbunden.

Ich habe nur keine Ahnung, was genau du da zeichnen willst und inwiefern deine for-Schleife da Auswirkungen drauf hat.
 

Maxx2332

Mitglied
Ich habe nur keine Ahnung, was genau du da zeichnen willst und inwiefern deine for-Schleife da Auswirkungen drauf hat.

also diese leben Methode in beute und raeuber verändert die Anzahl der beiden. Da sich meine Balken nach der Anzahl richten müssen sie halt neugezeichnet werden.

Und die For-schleife sagt halt wie oft diese leben methode durchgeführt wird und ich möchte halt das man jede Veränderung sieht.
 

Maxx2332

Mitglied
Java:
new Thread() {
public void run() {
// hier deine Schleife
}
}.start();

Dies ist im Endeffeckt die Lösung meines Problems gewesen. Da repaint() das Bild erst neuzeichnet wenn ein Thread beendet ist, da ich aber nur einen Thread habe wird auch nur das letzte Bild gezeichnet.

Daher dieser neue Thread der nur das repaint und Thread.sleep enthält um das malen zu verlangsamen und auch wirklich jeden Schirtt zusehen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
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
D Repaint()? Oder was??? AWT, Swing, JavaFX & SWT 5
M Eine nicht korrekte Darstellung bei repaint() warum? AWT, Swing, JavaFX & SWT 4
T 2D-Grafik Kreis "von Hand" zeichnen -> jedesmal repaint()? AWT, Swing, JavaFX & SWT 6
R validate(), repaint funktionieren nicht! AWT, Swing, JavaFX & SWT 7
B AWT Canvas überdeckt nach repaint() JComboBox-Optionen AWT, Swing, JavaFX & SWT 2
B Swing verschachteltes GUI: repaint() ändert mehr als nur gewünschte Component AWT, Swing, JavaFX & SWT 4
S validate(), invalidate(), repaint(),... Was kommt wann? AWT, Swing, JavaFX & SWT 5
M 2D-Grafik repaint() löscht altes Bild nicht AWT, Swing, JavaFX & SWT 2
J repaint() nicht richtig? AWT, Swing, JavaFX & SWT 6
R repaint erzwingen AWT, Swing, JavaFX & SWT 3
Zettelkasten repaint() von anderen Klassen aufrufen AWT, Swing, JavaFX & SWT 4
H repaint()-Problem - 50% CPU-Auslastung AWT, Swing, JavaFX & SWT 4
P repaint während Thread läuft AWT, Swing, JavaFX & SWT 9
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
N Swing MainWindow(JFrame) aktualisieren(neuzeichnen) repaint AWT, Swing, JavaFX & SWT 4
T repaint() Problem AWT, Swing, JavaFX & SWT 2
A 2D-Grafik Repaint - Alternative? AWT, Swing, JavaFX & SWT 3
C JLabel, JTextArea, JScrollPane. repaint(); ? AWT, Swing, JavaFX & SWT 6
N Swing repaint() funktioniert nicht AWT, Swing, JavaFX & SWT 5
T Swing repaint funktioniert nur manchmal? AWT, Swing, JavaFX & SWT 6
K Jpanel repaint problem (Fullscreen) AWT, Swing, JavaFX & SWT 5
V Swing Bei repaint() tut sich nichts AWT, Swing, JavaFX & SWT 7
G ColorReader, bei Fadenkreuz zeichnen mit repaint() flackern AWT, Swing, JavaFX & SWT 19
I Canvas Repaint Probleme AWT, Swing, JavaFX & SWT 2
D Swing Actionlistener verhindert repaint?! AWT, Swing, JavaFX & SWT 2
S JLabel repaint AWT, Swing, JavaFX & SWT 8
C Swing Linux mag mein Swing-repaint() nicht... AWT, Swing, JavaFX & SWT 7
J Swing paintComponent() - repaint() - BufferedImage anzeigen AWT, Swing, JavaFX & SWT 5
Luk10 repaint() auch in anderen Klassen! AWT, Swing, JavaFX & SWT 6
A repaint() zu langsam, bitte um alternativen AWT, Swing, JavaFX & SWT 5
T Überlappende Transparenz und repaint() AWT, Swing, JavaFX & SWT 10
E EINFACHE Verständnisfrage zu repaint(), paintComponent(), usw. AWT, Swing, JavaFX & SWT 16
O Girdbag Formatierung nach repaint verloren AWT, Swing, JavaFX & SWT 2
E Swing - repaint() AWT, Swing, JavaFX & SWT 6
T Image wird nicht angezeigt?! - MediaTracker/repaint AWT, Swing, JavaFX & SWT 9
E AWT Problem mit Repaint (in Loop oder Timer) AWT, Swing, JavaFX & SWT 3
O Exception bei repaint AWT, Swing, JavaFX & SWT 3
D Fragen zu Swing, paintComponent() und repaint AWT, Swing, JavaFX & SWT 6
Dit_ Zeilenmarkierung verschwindet nach repaint() AWT, Swing, JavaFX & SWT 12
A Swing Infinite repaint loop unterbrechen AWT, Swing, JavaFX & SWT 7
hdi Swing EDT macht kein repaint() AWT, Swing, JavaFX & SWT 2
F "Verrutschen" von Komponenten bei repaint() AWT, Swing, JavaFX & SWT 9
Junker Fensterinhalt vor ausführen von repaint komplett löschen. AWT, Swing, JavaFX & SWT 2
T Fenster wird trotz repaint() und revalidate() nicht sofort neu gezeichnet AWT, Swing, JavaFX & SWT 6
E Graphics2D: altes Objekt löschen, wenn repaint aufgerufen wird AWT, Swing, JavaFX & SWT 7
J Swing Verständnis-Problem repaint(int x,int y,int width,int height) AWT, Swing, JavaFX & SWT 3
C Frame repaint hat keine Wirkung AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben