paint () e repaint () em Java

Eu passei talvez as últimas duas horas navegando e lendo esses métodos e a classe Graphics, e talvez eu seja estúpida, haha, mas eu não estou entendendo nada. Para que servem? Eu entendo que eles deveriam redesenhar ou atualizar componentes na tela, mas eu nunca entendi porque isso é necessário (eu sou novo nisso). Por exemplo, se eu estou movendo um JLabel pela tela, uma chamada para setLocation () o move muito bem. Esse é um cenário em que repaint () não é necessário? Em quais cenários é útil e por quê?

Desculpas se você acha que esta é uma pergunta que poderia ser resolvida usando a função de busca, mas por alguma razão eu não entendi.

questionAnswers(3)

yourAnswerToTheQuestion