С использованием векторной графики создать заставку с развивающимся российским флагом на 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);
}
}
}
}