Graphics em um Painel -> Sleep!?!

Estou desenhando um drawPolygon, fiz varios desenhos e gostaria que ao executar o programa, cada desenho aparecer um apos o outro.
Para isso eu coloquei Thread.sleep(100), quando eu uso um frame da certo, mas quando eu uso um JPainel não da!!!

Ja tentei o metodo repaint() , fiz de tudo, mas não consegui fazer com que apareça o desenho de acordo com o tempo que eu coloquei no sleep.

Como eu faço?

Logo abaixo o codigo.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JPanel;


public class PoligonosTranslacao extends JPanel{
    
  public PoligonosTranslacao()
	{
		setBackground( Color.WHITE );
	}
	
	public void paint( Graphics g )
	{
	   g.setColor( Color.BLUE );
           
           int VertX[] = {50,150,150,100,50};
           int VertY[] = {50,50,150,200,150};
           int nVert = 5;        
           
           Polygon p1 = new Polygon(VertX,VertY,nVert);
           
           g.drawPolygon(p1);
           //fazer um metodo!.
           for(int i=0; i < 3 ; i++)
           {
           translacao(p1,i+30,i-16);
           
           try
           {
               
               Thread.sleep(100);  
           }
           catch (Exception e){}
           
           g.setColor(Color.BLACK);         
           g.drawPolygon(p1);
           }
           
	}
        
        public void translacao(Polygon p , int dx, int dy)
        {
            for(int i = 0; i < p.npoints;i++)
            {
                p.xpoints[i]+=dx;
                p.ypoints[i]+=dy;
            }
        }

	/* Fatores de translação Dx e Dy, descolamento na vertical e horizontal.
         * 
         * Para cada vertice => valor atual + Dx .
         * x' = x + Dx
         * y' = y + Dy
         * Valores positivos afastam da origem.
         *  O y começa de cima ponto (0,0) no canto esquerdo.
         *
         * Dx negativo -> esquerta
         * Dy negativo => sobe
         *
         **/
	public static void main(String[] args)
 	{
 		PoligonosTranslacao panel = new PoligonosTranslacao();
 		JFrame frame = new JFrame();
 		
 		frame.setDefaultCloseOperation( 
 		JFrame.EXIT_ON_CLOSE );
        	frame.getContentPane().add( panel );
 		frame.setSize( 400, 400 );
                Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
                Dimension windowSize = frame.getSize();
                frame.setLocation(
                (int) ((screenSize.getWidth() - windowSize.getWidth()) / 2),
                (int) ((screenSize.getHeight() - windowSize.getHeight()) / 2));
        
 		frame.setVisible( true );
 		frame.setResizable( false );
 	}
    
}