Je pense m'être rapprocher de la solution, je ne trouve juste pas le moyen de rappeler la méthode paint dans le run... Si quelqu'un à la solution

import java.awt.*;
import javax.swing.*;
import java.net.* ;
public class TestDessin extends JPanel implements Runnable {
private Color color;
private float offsetX;
private float offsetY1;
private float offsetY;
private float offsetX1;
private float fa;
private float fb;
private float fx;
private float fy;
public Thread T;
public TestDessin(Color color, float offsetX, float offsetY, float offsetX1, float offsetY1) {
super();
this.color = color;
this.offsetX = offsetX;
this.offsetX1 = offsetX1;
this.offsetY = offsetY;
this.offsetY1 = offsetY1;
this.fx=offsetX;
setPreferredSize(new Dimension(1000, 600));
T = new Thread(this);
T.start();
}
public void paint(Graphics g) {
super.paint(g);
g.setColor(color);
Image image = this.getToolkit().getImage("plan.gif");
g.drawImage(image,0,0,this);
Image image1=this.getToolkit().getImage("b1.gif");
g.drawImage(image1,(int)offsetX,(int)offsetY,this);
Image image2=this.getToolkit().getImage("b1.gif");
g.drawImage(image2,(int)offsetX1,(int)offsetY1,this);
g.drawLine((int)offsetX, (int)offsetY, (int)offsetX1, (int)offsetY1);
g.drawLine((int)offsetX-1, (int)offsetY, (int)offsetX1-1, (int)offsetY1);
g.drawLine((int)offsetX+1, (int)offsetY, (int)offsetX1+1, (int)offsetY1);
g.drawLine((int)offsetX-2, (int)offsetY, (int)offsetX1-2, (int)offsetY1);
g.drawLine((int)offsetX+2, (int)offsetY, (int)offsetX1+2, (int)offsetY1);
g.drawLine((int)offsetX-3, (int)offsetY, (int)offsetX1-3, (int)offsetY1);
g.drawLine((int)offsetX+3, (int)offsetY, (int)offsetX1+3, (int)offsetY1);
Image image3=this.getToolkit().getImage("avionS1.gif");
g.drawImage(image3,(int)fx,(int)fy,this);
}
public void run() {
while (true) {
if(fx<offsetX1)
{
this.fa=(this.offsetY1-this.offsetY)/(this.offsetX1-this.offsetX);
this.fb=this.offsetY-this.fa*this.offsetX;
fx=fx+1;
fy=fa*fx+fb;
invalidate();
try {T.sleep(100);} catch (InterruptedException e) {}
}
}
}
public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(500,400);
// adapter aux coordonné XY de la villeD et XY de la ville A
TestDessin t=new TestDessin(Color.RED, 50,30,300,100);
jf.getContentPane().add(t);
jf.setVisible(true);
JTextField villA = new JTextField("Paris");
JTextField villD = new JTextField("New York");
jf.getContentPane().add(villA);
jf.getContentPane().add(villD);
villA.setEditable(false);
villD.setEditable(false);
villA.setBounds(230,300,100,20);
villD.setBounds(100,300,100,20);
}
}