Прежде всего, не Override
paint()
метод. Override
paintComponent(Graphics g)
метод (и не забудьте вызвать super.paintComponent(g)
.
Во-вторых, использование метода Thread.sleep()
в EDT (надеюсь, вы запускаете приложение, используя SwingUtilities#invokeLater
) - плохая идея, так как все события прекратятся (с несколькими словами, весь GUI будет зависать).
Вы должны использовать вместо этого Таймер свинга .
Наконец, не вызывайте repaint()
внутри paintComponent
, потому что repaint()
снова вызовет paintComponent
, и это будет бесконечный цикл. Вам следует перекрасить компонент в слушателе действия Timer.