С использованием векторной графики создать заставку с развивающимся российским флагом на java

У меня задание сделать развевающийся флаг на Java с использованием библиотек Java Swing в векторной графике. У меня получилось его отобразить, но анимация "мигает", получается, что после смены кадров видно белое очертание, как сделать чтобы анимация была более плавной?

package t;
import java.awt.Color;
import java.awt.Graphics2D; 
import java.awt.Graphics; 
import javax.swing.JFrame;
import javax.swing.Timer;

public class T extends JFrame implements Runnable{
    int x=250, y = 20;
    double t = 55.4;
    int v=0;
    public static void main(String[] args) {
        T ma = new T();
        Thread th = new Thread(ma);
        th.start();
        
    }
    T(){
        super ("animation");
        setDefaultCloseOperation (EXIT_ON_CLOSE);
        setVisible(true);
        setSize(300,300);
        setLocation(500,400);
    }
    public void paint(Graphics g)
    {
        super.paint(g);
        Graphics2D g2=(Graphics2D) g;
        for ( int i=0; i<200; i++)
        {
                for (int t2=100; t2<130; t2+=1)
                {
                    g2.setColor(Color.white);
                    g2.drawLine(i,(int)(-y*Math.sin(i*2*Math.PI/x)+t2),i,(int)(-y*Math.sin(i*2*Math.PI/x)+t2)); 
                }  
                for (int t2=130; t2<160; t2+=1)
                {
                    g2.setColor(Color.blue);
                    g2.drawLine(i,(int)(-y*Math.sin(i*2*Math.PI/x)+t2),i,(int)(-y*Math.sin(i*2*Math.PI/x)+t2)); 
                }  
                for (int t2=160; t2<190; t2+=1)
                {
                    g2.setColor(Color.red);
                    g2.drawLine(i,(int)(-y*Math.sin(i*2*Math.PI/x)+t2),i,(int)(-y*Math.sin(i*2*Math.PI/x)+t2)); 
                }
        }
    }
    public void run ()
    {
        while(true)
        {
            
            if(v==0)
            {
               y+=3;
               if (y>40){
                   v=1;
               }
            }
            if(v==1)
            {
               y-=3;
               if (y<10){
                   v=0;
               }
            }
            repaint();
            try{
                
                Thread.sleep(200);
                
            }
            catch (InterruptedException e){
                System.out.print(e);
            }
            
        }
    }
    
}

Ответы (0 шт):