Quando chamar o repaint?

Olá, já venho um tempo programando em Java, especialmente desktop. Quando comecei a manipular o objeto Graphics dentro dos métodos de pintura consegui mais flexibilidade para criar interfaces diferenciadas. Porém uma dúvida que eu tenho é, por quê chamar o repaint()? Eu achei que o paint(Graphics g) era chamado frequentemente a uma certa taxa de FPS, se esse pensamento meu estivesse correto, acredito que não faz muito sentido chamar um método para repintar, inclusive quando eu altero a posição de uma imagem que está sendo renderizada no método paint(Graphics g) sem chamar o repaint(), tudo funciona bem. Porém quando altero a imagem, só a primeira é exibida. Se alguém souber me explicar agradeço!

Considerando isso

You need to call repaint() and revalidate(). The former tells Swing that an area of the window is dirty (which is necessary to erase the image of the old children removed by removeAll()); the latter tells the layout manager to recalculate the layout (which is necessary when adding components). This should cause children of the panel to repaint, but may not cause the panel itself to do so (see this for the list of repaint triggers).
(retirado daqui), podemos concluir que:
paint = não fica atualizando
repaint = indica que é preciso alterar algo no JPanel.
revalidate = executa a ação de limpar e permite que o layout novo seja apresentado.

1 curtida