# [JAVA] Double Buffering



## Thomas Darimont (27. April 2003)

[KeyWords]
Flackern verhindern; Pufferung; DoppelPufferung; DoubleBuffering;
[/KeyWords]

Servus!

Schreibe stelle hier jetzt mal ne Anleitung zur DoppelPufferung der Grafikausgabe unter Java ab, dass ich die immer schön zur Hand habe wenn ich sie in der BA mal brauche... ;-)

[AWT]->[Frame]

Bei der Klasse Frame gibt es die beiden Methoden paint(Graphics g) und
update(Graphics g) und repaint();

durch repaint() wird die Methode update(Graphics g) und danach die Methode paint(Graphics g) aufgerufen. In der "Ur-Version" löscht update(Graphics g) den Bildbreich der neu gezeichnet werden soll und ruft dann paint(Graphics g) auf ...

wenn wir jetzt Gepufferte Grafikausgaben erzeugen wollen müssen wir nur die Methode update(Graphics g) überlagern ...


```
Image bufImage;
Graphics bufG;

...

public void update(Graphics g){
        
        int w = this.getSize().width;
        int h = this.getSize().height;

        if(bufImage == null){
              bufImage = this.createImage(w,h);
              bufG = bufImage.getGraphics();
        }
        
        bufG.setColor(this.getBackground());
        bufG.fillRect(0,0,w,h);
        
        bufG.setColor(this.getForeground());
        
        paint(bufG);

        g.drawImage(bufImage,0,0,this);

}
```

... so werd' dass hier demnächst auch mal als Tutorial heraus bringen wo auch ne Begründung dabei stehen wird, warum das hier funktioniert *g* 

Gruss Tom


----------



## myGuest12052009 (5. Dezember 2009)

Also bei mir gehts darum, dass ein Image (java.awt.Image) flackert; dass wird auch mit deiner überschriebenen update-Methode nicht verhindert...


----------



## Thomas Darimont (5. Dezember 2009)

Hallo,

das Beispiel ist Ur-Alt... mit der java.awt.image.BufferStrategy  bekommt man viel einfacher flicker-freie UI's hin.

Schau mal hier:
http://www.tutorials.de/forum/java/...r-ein-brettspiel-mit-java-2d.html#post1320560

Gruß Tom


----------

