Java Swing revalidate () vs repaint ()

Eu estou montando um aplicativo Swing onde muitas vezes quero substituir o conteúdo de um JPanel. Para fazer isso, eu estou chamandoremoveAll(), adicionando meu novo conteúdo e, em seguida, chamandorevalidate().

No entanto, estou achando que o conteúdo antigo ainda está visível (embora obscurecido pelo novo conteúdo). Se eu adicionar uma chamada pararepaint() além derevalidate()funciona como esperado.

Tenho certeza que em outras ocasiões eu experimentei issorevalidate() basta.

Então, basicamente, minha pergunta é - devo chamar ambas as funções e, se não, quando devo ligar para cada uma delas?

questionAnswers(5)

yourAnswerToTheQuestion