Permanenter Inhalt für JPanel (repaint vermeiden)

cath

Grünschnabel
Auf meinem JPanel werden in der paint()-Methode einigermaßen rechenintensive Operationen ausgeführt. Nun wäre es in dem speziellen Fall aber unsinnig, bei jedem update() alles sozusagen per Fuß neu zeichnen zu lassen, weil sich da eigentlich nichts ändert. Kann man, was man einmal als Zeichnung errechnet hat, irgendwie zwischenspeichern oder gibt es irgendwelche anderen Tricks, um mein Problem zu lösen?
 
Du könntest Deine "Zeichnung" als Bild zwischenspeichern und in der paint()-Methode per Flag entscheiden, ob gezeichnet werden soll.

Code:
boolean zeichne = true; //erstmal
BufferedImage myBuff = new BufferedImage(iWidth, iHeight, BufferedImage.TYPE_INT_RGB);
//...
public void paint(Graphics g) {
if (zeichne) {
zeichnen(myBuff.getGraphics());
zeichne = false;
repaint(); //jetzt wird's dargestellt
}
else {
g.drawImage(myBuff, 0, 0, iWidth, iHeight, this);
}
} 
//...
private void zeichnen(Graphics g) {
//male, male, berechne, male
}
 
Zurück