Não cara, dessa vez significa estar errado sim. Veja o documento:
http://java.sun.com/products/jfc/tsc/articles/painting/#callbacks
Onde diz:
Swing programs should override paintComponent() instead of overriding paint().
Outra coisa, sobre misturar AWT e Swing:
http://java.sun.com/products/jfc/tsc/articles/mixing/
Onde diz:
However, because there are significant advantages to using lightweight components, we recommend using lightweights (and Swing!) wherever possible and only using
heavyweight components where a lightweight version either isn’t yet available or doesn’t meet your program’s needs.
Existem muitos problemas que podem ser causados por não seguir as recomendações do Swing. Você deve ler atentamente a documentação e programar nelas. No seu caso, você está misturando componentes heavy-weight com lightweight, e também está sobrescrevendo o método errado de pintura. Isso irá prejudicar caso você queira usar o double-buffering, bordas, ou outros recursos mais sofisticados do Swing. Isso também poderá prejudicar e até mesmo impedir a portabilidade da sua aplicação, o que é um bug disfarçado e cruel.
“Fazer funcionar” não é sinônimo de “fazer da maneira correta” ou “fazer sem problemas”. Muitas vezes (para não dizer, na maior parte das vezes), um código que aparentemente funciona, ou funciona em uma situação específica é mais nocivo que um que não funciona de jeito nenhum.