Когда вы рисуете в методе JComponent paintComponent (например, в JPanel), вы используете Swing, который использует двойную буферизацию при рисовании по умолчанию.Рисование непосредственно в методе рисования JFrame позволит только рисование типа AWT, поскольку JFrame напрямую наследует от Frame, контейнера с большим весом, и поскольку графика AWT по умолчанию не использует двойную буферизацию, что приведет к прерывистой анимации.