Swing java position

Fermé
Streamooc Messages postés 79 Date d'inscription samedi 17 juin 2017 Statut Membre Dernière intervention 8 février 2023 - Modifié le 22 janv. 2018 à 13:22
Bonjour,
J'aimerais que ce code en réalité me permette de changer la position du fil rouge mais il ne fait que rester à chaque fois dans la même position.Je veux que le fil apparaisse entre deux endroits spécifiques montrant ainsi l'interaction entre les deux
J'ai besoin urgemment d'aides si quelqu'un pourra m'aider.Voici le code
public class Fenetre extends JFrame{
 private Panneau pan = new Panneau();

   public Fenetre(){        
     this.setTitle("Animation");
     this.setSize(300, 300);
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     this.setLocationRelativeTo(null);
     this.setContentPane(pan);
     this.setVisible(true);
   go();
   }

//    /**
//     * Cette méthode permet de déclencher le passage de la barre
//   * 
//   */
   public void go(){
//Partie1
    System.out.println(pan.getHeight());
    for(int i = 0; i < pan.getHeight(); i++){
       int x = pan.getPosX(), y = pan.getPosY();
       x++;
       y++;
       pan.setPosX(x);
       pan.setPosY(y);
       pan.repaint();     //pan.repaint(). Elle demande à votre composant, ici un JPanel, de se redessiner.
       try {
         Thread.sleep(10);    ///Mise en attente du programme pendant un laps de temps défini dans la méthode sleep() exprimé en millièmes de seconde
       } catch (InterruptedException e) {
         e.printStackTrace();
       }
     }
   
    for(;;){
       int x = pan.getPosX(), y = pan.getPosY();
       x++;
       y++;
       pan.setPosX(x);
       pan.setPosY(y);
       pan.repaint();  
       try {
         Thread.sleep(10);
       } catch (InterruptedException e) {
         e.printStackTrace();
       }
    }
   }
   }

public class Panneau  extends JPanel{
 public Panneau() {
 }
 
 //Partie 1:fil rouge
 private int posX = 20;
   private int posY = 20;
   @Override
   public void paintComponent(Graphics g){
     g.setColor(Color.red);
     g.fillRect(posX, posY, 50, 50);
   }
   public int getPosX() {
     return posX;
   }
   public void setPosX(int posX) {
     this.posX = posX;
   }
   public int getPosY() {
     return posY;
   }
   public void setPosY(int posY) {
     this.posY = posY;
   }      
}
A voir également: