используйте super.paintComponent (g) или getGraphics () в Java

Я немного запутался в нескольких вещах:

Пример кода, который показывает мою проблему, это не компилируется

// 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);
     }
}

Я создаю глобальный объектGraphic2D и я рисую вещи вrender()Я не звонюrepaint() внутри игрового цикла,это хорошая практика, чтобы сделать это?

Должен ли я использоватьrepaint() внутри моей петли, иpaintComponent() функция?

еще одна вещь, какgraphic.dispose() работает правильно? , потому что, пытаясь удалить эту строку кода, ничего не происходит.

Я понимаю, как работает dispose () в соответствии с Java документами, но я не заметил различий с dispose () или без.

моя программа работает очень хорошо, но у меня есть эти дубли.

Ответы на вопрос(2)

Ваш ответ на вопрос