Wie Beni
nebenan (in deinem alten Thread) schon gesagt hat: Das der
paintComponent übergebene Graphics
ist bereits ein Graphics2D oder
genauer: Es ist die Instanz einer Klasse die zusätzlich zu Graphics auch das
erweiterte Interface Graphics2D implementiert. Du hast also durch den Cast
auf Graphics2D mehr und feinere Funktionen zur Verfügung.
Früher (AWT) wurde ein BufferedImage benutzt um das
Flackern beim Neuzeichnen
zu vermeiden, da direkt in das
Monitor-Image gezeichnet wurde und zum
Beispiel beim
langsamen Zeichnen einer Hilbert-Kurve das andauernde
Löschen des Hintergrunds zu sehen war. In den neuen (allen?) Swing-Versionen wird
standardmäßig double-Buffering verwendet. Das Image wird also erst
in Ruhe
neu gezeichnet, bevor es dann auf einen Schlag ins Monitor-Image geklatscht wird.
Kein Flackern mehr.
Allerdings gibt es auch andere Anwendungen wo das Zeichnen in ein anderes
BufferedImage Sinn macht. Frag mich aber nicht was für Anwendungen das sind