witam
mam trzy klasy do rysowania (kurs http://javastart.pl/ )

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

public class MyFrame extends JFrame {
    public MyFrame() {
        super("Rysowanie");
        JPanel panel = new MyPanel();

        add(panel);

        pack();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
}
import java.awt.EventQueue;

public class Test {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new MyFrame();
            }
        });
    }
}
import java.awt.*;
import java.awt.geom.*;

import javax.swing.JPanel;

public class MyPanel extends JPanel {
    public MyPanel() {
        setPreferredSize(new Dimension(400, 400));
    }

    @Override

    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;

        // prostokat

int licznik = 0;
        //Czytaj więcej na: http://javastart.pl/podstawy-jezyka/tablice-wielowymiarowe/#ixzz2R7BsyofG
        while (licznik<10) {

	    	licznik ++;
	    	 try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

        Rectangle2D rectangle = new Rectangle2D.Double(licznik, 4, 10, 10);
        g2d.draw(rectangle);

        // kolo
      //  Ellipse2D circle = new Ellipse2D.Double(10, 10, 380, 380);

       //  g2d.draw(circle);
        }
    }
}

jak zmodyfikować ten kod, aby program rysował na bieżąco? teraz okienko wyświetla efekt swojej pracy dopiero po wykonaniu całej pętli while, a chciałbym aby robił to na bieżąco. jak uzyskać taki efekt?