benutze super.paintComponent (g) oder getGraphics () in Java

Ich bin ein bisschen verwirrt über einige Dinge:

Beispielcode, der mein Problem zeigt, das ist nicht kompilierbar

// image
private BufferedImage image;
private Graphics2D graphic;
private changeImage;
. . .
//thread loop
while (running) {
   . . .
    render();
    Graphics showGraphic = getGraphics();
    showGraphic.drawImage(image, 0, 0, null);
    showGraphic.dispose();
    }
 public void render(){
     if(changeImage == 1)
     graphic.drawImage(ImageLoader.TREE, 0, 0, null);
     else if(changeImage == 2){
     graphic.drawImage(ImageLoader.HOUSE, 0, 0, null);
      . . .
     graphic.fillRect(50,60,30,40);
     }
}

Ich erstelle ein globales ObjektGraphic2D und ich zeichne Dinge inrender()Ich rufe nicht anrepaint() innerhalb der spielschleife,Ist es eine gute Praxis, dies zu tun?

Sollte ich es benutzenrepaint() in meiner Schleife, und diepaintComponent() Funktion?

eine andere Sache, wiegraphic.dispose() funktioniert richtig? , weil beim Versuch, diese Codezeile zu entfernen, nichts passiert.

Ich verstehe, wie funktioniert dispose () nach Java Docs, aber ich habe keine unterschiede mit dispose () oder ohne bemerkt.

Mein Programm läuft sehr gut, aber ich habe diese Dubts.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage