[java]mon rond bondit pas

Bonjour,
j'écris le prg suivant,en l'exécutant le fenêtre apparait, mais il n' y rien dedans;
aucune erreur non plus
aidez moi svp

import java.awt.Dimension;
import javax.swing.JFrame;
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();
       }
       private void go()
            {
             int x=pan.getPosX(),y=pan.getPosY();
             boolean backX=false;
             boolean backY=false;
             while(true)
             {
              if(x<1)backX=false;
              if(x>pan.getWidth()-50)backX=true;
              if(y<1)backY=false;
              if(y>pan.getHeight()-50)backY=true;
              if(!backX)
               pan.setPosX(++x);
              else
               pan.setPosX(--x);
              if(!backY)
               pan.setPosX(++y);
              else
               pan.setPosX(--y);
               pan.repaint();
 
             try
             {
              Thread.sleep(3);
             }
             catch(InterruptedException e)
             {
              e.printStackTrace();
             }
         }
        }    
        public static void main(String[]args)
         {   
                 Fenetre pan=new Fenetre();    
         }
     } 
 
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Panneau extends JPanel
{
 private int posX=-50;
 private int posY=-50;
 
 public void paintComponent(Graphics g)
     { 
  g.setColor(Color.white);
  g.fillRect(0,0,this.getWidth(),this.getHeight());
  g.setColor(Color.red);//on redéfinit une couleur pour notre rond
  g.fillOval(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;
 }
}


2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Bonsoir,

    Tu as signalé avoir résolu ton souci. L'usage des forums veut que, quand on a trouvé soi-même la solution, on revienne pour l'expliquer aux passants intéressés. Merci.
    1. Modérateur
      "Tu as signalé avoir résolu ton souci."
      Ah !? Si seulement...

      "L'usage des forums veut que, quand on a trouvé soi-même la solution, on revienne pour l'expliquer aux passants intéressés."
      Pour les "passants intéressés" je leur conseille : Comment faire ricocher des Balles entre elles.
      Il y a tout dedans : dessin d'une balle (plusieurs en fait), rebond sur les bords, rebond sur les autres balles et tout ça en respectant (au mieux) les lois de la physique ! Ce devrait être plus utile...
    2. Modérateur
      :-)
  2. bonjour
    c'est une erreur de ma part,au lieu d'écrire les codes x et y,
    j'écris deux fois pour x pour ça mon prg a planté

    voilà mon erreur corrigé:
    //si on avance, on icrememente la coordonnée
    	        		   if(!backX)
    	        			   pan.setPosX(++x);
    	        		   //sinon, on décrémente
    	        		   else
    	        			   pan.setPosX(--x);
    	        		   
    	        		   //idem pour l'axe Y
    	        		   if(!backY)
    	        			   pan.setPosY(++y);
    	        		   //sinon, on décrémente
    	        		   else
    	        			   pan.setPosY(--y);