IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

probleme pour générer des objets aleatoirement


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut probleme pour générer des objets aleatoirement
    Bonjour ,
    Je souhaiterai faire une classe me permettant en appuyant sur un bouton de générer aléatoirement dans un applet un objet (exemple un carré)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    				/** Un rectangle est caractérise par sa largeur et sa hauteur
                    *   la largeur et la hauteur sont des entiers positifs 
                    *  @author 
                    *  
                    */
    import java.awt.Color;
    import java.awt.Graphics; 		
    public class Rectangle {
    	private int nombre=0;	
    	private double largeur, hauteur ;
    	    private float x ; // abcisse du coté du rectangle
    	    private float y ; // ordonnee du coté du rectangle
    		public Maclasse(){this((float)(Math.random())*500,(float)(Math.random())*500,5,5);}
    	    public Rectangle (float xInit, float yInit, double l, double h){this.largeur=l;this.hauteur=h;this.x=xInit;this.y=yInit; }
     
    	    /** Obtenir le nombre  de Rectangle
                    *   @return le nombre de pierre */
    	  public int getNombre(){return this.nombre;}
    	/** fixer le nombre de Rectangle
            *   @param Nombre de Rectangle */
    	  public void setNombre(int a){this.nombre=a;}
    	/** Obtenir l'ordonnée  du Rectangle
            *   @return l'ordonnée du coté en haut a gauche */
     
    	    /** Obtenir l'abscisse  du Rectangle
                    *   @return l'abscisse du coté en haut a gauche */
    	  public double getX(){return this.x;}
    	/** fixer l'abscisse  du Rectangle
            *   @param l'abscisse du coté en haut a gauche */
    	  public void setX(float a){this.x=a;}
    	/** Obtenir l'ordonnée  du Rectangle
            *   @return l'ordonnée du coté en haut a gauche */
    	  public double getY(){return this.y;}
    /** fixer l'ordonnée  du Rectangle
    *   @param l'ordonneé du coté en haut a gauche */
    	  public void setY(float a){this.y=a;}
     
    	    /** Obtenir la largeur du Rectangle
                            *   @return la largeur */
    		public double getLargeur(){return this.largeur;}
     
    			/** Obtenir la hauteur du Rectangle
                            *   @return la hauteur */
    		public double getHauteur(){return this.hauteur;}
     
    			/** fixer la largeur du Rectangle
                            *   @param la largeur */
    			public void setLargeur(double l){this.largeur=l;}
     
    			/** fixer la hauteur du Rectangle
                            *   @param la hauteur */
    		public void setHauteur(double h){this.hauteur=h;}
     
    		public double surface(){return this.hauteur*this.largeur;}
     
     
    			/** Dessiner autant de d'objet sur le terrain que voulu */
    		//public void Terrain(Color c,){for(int i=0 ; i<this.nombre ; i++) }
     
    		public void dessiner(Graphics g, Color c){
    	         g.setColor(c);
    	         for(int i=0;i<nombre;i++){g.drawRect((int)Math.random(), (int)Math.random(), (int)this.getLargeur(), (int)this.getHauteur());
    	     this.dessiner(g, c);}
    			} }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    	import java.applet.Applet;
    import java.awt.*;
     
    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.* ;
     
    public class TestRectangle extends Applet implements ActionListener {         private Button +Rectangle = new Button("+ Rectangle") ;
      Rectangle Rect1=new Rectangle();
     
       public void init(){
          this.add(+Rectangle);
          +Rectangle.addActionListener(this);
    }
     
     
     
     
       public void actionPerformed(ActionEvent e){
          if(e.getActionCommand() == "+ Rectangle"){( rect1.setNombre(rect1.getNombre()+1) ; repaint();}
          }
     
       public void paint(Graphics g) {  
          g.drawRect(5,5,Cercle.xMax-5,Cercle.yMax-5)
     
          pierre.dessiner(g, Color.ORANGE);
       }
     
     
     
     
    	}
    Le mieux serait de mettre des rectangles dans un tableau si cela est possible ? (un tableau a plusieurs dimensions)
    Merci d'avance de votre aide
    Et j'ai une erreur de compilation sur rect1.setNombre(rect1.getNombre()+1) ; repaint();}
    pourquoi cela est il faux ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Tu as une parenthèse en trop.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void actionPerformed(ActionEvent e){
          if(e.getActionCommand() == "+ Rectangle"){(  // Parenthèse qui sert à rien
                 rect1.setNombre(rect1.getNombre()+1) ; 
                 repaint();
          }
    }
    Et surtout ne pas utiliser == pour comparer les String mais s1.equals(s2).

    Le mieux étant de mettre "taConstante".equals(taValeurATester) ca évite les NullPointerException. Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void actionPerformed(ActionEvent e){
          if("+ Rectangle".equals(e.getActionCommand())){
                 rect1.setNombre(rect1.getNombre()+1) ; 
                 repaint();
          }
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    Merci
    Mais j'ai un autre problème au lieu de me générer un seul rectangle il m'en génère plein plein et je ne vois pas ou j'ai pu lui demander ça puisque j'ai définit la variable nombre a 0 du coup au départ je devrai rien avoir non ?
    Et puis je laisser mes carré comme ça ou je dois les stocker dans une liste?
    Merci d'avance

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    De ce que j'ai compris vite fait :

    A chaque clic tu incrémentes un nombre de rectangle.
    Et tu en dessine le nombre qui se trouve dans Rectangle.

    Donc au premier clic il t'en dessine 1.
    Donc au deuxième clic il t'en dessine 2.
    Donc au troisième clic il t'en dessine 3.
    ...
    Donc au premier clic il t'en dessine N.


    Quel est le problème exactement ?
    Il t'en dessine combien à chaque clic ?


    De toute façon il y a quelque chose de louche dans ton code...

    Ton application devrait avoir une List<Rectangle>
    A chaque clic, dans le actionPerformed, au lieu d'incrémenter "nombre" tu devrait construire un nouveau rectangle et l'ajouter à ta liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void actionPerformed(ActionEvent e) {
        Rectangle rect = new Rectangle(x, y , l, h);
        listeRectangles.add( rect );
        repaint();
    }
    Ensuite dans la méthode paint de ton Applet, tu dessines tous tes rectangles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void paint(Graphics g) {  
          for(Rectangle rect : listeRectangles) {
               rect.dessiner(g, uneCouleur);
          }
    }
    Est tu sûr que le code que tu as posté compile ? Parce que à vue de nez, j'ai l'impression qu'il devrait y avoir des erreur de compilation partout.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    Effectivement j'ai beaucoup d'erreur ...
    Voici la liste je ne les comprend pas en faite ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
    	at TestMaclasse.paint(TestMaclasse.java:61)
    	at sun.awt.RepaintArea.paintComponent(Unknown Source)
    	at sun.awt.RepaintArea.paint(Unknown Source)
    	at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    	at java.awt.EventQueue.access$000(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
    	at TestMaclasse.paint(TestMaclasse.java:61)
    	at sun.awt.RepaintArea.paintComponent(Unknown Source)
    	at sun.awt.RepaintArea.paint(Unknown Source)
    	at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    	at java.awt.EventQueue.access$000(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.awt.EventQueue$4.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)


    je redonne mes classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    				/** Un rectangle est caractérise par sa largeur et sa hauteur
                    *   la largeur et la hauteur sont des entiers positifs 
                    *  @author 
                    *  
                    */
    import java.awt.Color;
    import java.awt.Graphics; 		
    public class Maclasse {
    	private int nombre=0;	
    	private double largeur, hauteur ;
    	    private float x ; // abcisse du coté du rectangle
    	    private float y ; // ordonnee du coté du rectangle
    		public Maclasse(){this((float)(Math.random())*500,(float)(Math.random())*500,5,5);}
    	    public Maclasse (float xInit, float yInit, double l, double h){this.largeur=l;this.hauteur=h;this.x=xInit;this.y=yInit; }
    	    /** Obtenir le nombre  de Pierre
                    *   @return le nombre de pierre */
    	  public int getNombre(){return this.nombre;}
    	/** fixer le nombre de Pierre
            *   @param Nombre de Pierre */
    	  public void setNombre(int a){this.nombre=a;}
    	/** Obtenir l'ordonnée  du Rectangle
            *   @return l'ordonnée du coté en haut a gauche */
     
    	    /** Obtenir l'abscisse  du Rectangle
                    *   @return l'abscisse du coté en haut a gauche */
    	  public double getX(){return this.x;}
    	/** fixer l'abscisse  du Rectangle
            *   @param l'abscisse du coté en haut a gauche */
    	  public void setX(float d){this.x=d;}
    	/** Obtenir l'ordonnée  du Rectangle
            *   @return l'ordonnée du coté en haut a gauche */
    	  public double getY(){return this.y;}
    /** fixer l'ordonnée  du Rectangle
    *   @param l'ordonneé du coté en haut a gauche */
    	  public void setY(float a){this.y=a;}
     
    	    /** Obtenir la largeur du Rectangle
                            *   @return la largeur */
    		public double getLargeur(){return this.largeur;}
     
    			/** Obtenir la hauteur du Rectangle
                            *   @return la hauteur */
    		public double getHauteur(){return this.hauteur;}
     
    			/** fixer la largeur du Rectangle
                            *   @param la largeur */
    			public void setLargeur(double l){this.largeur=l;}
     
    			/** fixer la hauteur du Rectangle
                            *   @param la hauteur */
    		public void setHauteur(double h){this.hauteur=h;}
     
    		public double surface(){return this.hauteur*this.largeur;}
     
     
    			/** Dessiner autant de d'objet sur le terrain que voulu */
    		//public void Terrain(Color c,){for(int i=0 ; i<this.nombre ; i++) }
     
    		public void dessiner(Graphics g, Color c){
    	         g.setColor(c);
    	         /*for(int i=0;i<nombre;i++){*/g.drawRect((int)(Math.random()*500), (int)(Math.random()*500), (int)(this.getLargeur()), (int)this.getHauteur());
    	     this.dessiner(g, c);}
    			//} 
    		}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    	import java.applet.Applet;
    import java.awt.*;
     
    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.* ;
    import java.util.ArrayList;
     
    public class TestMaclasse extends Applet implements ActionListener{
      /*private Button reduireAngle = new Button("-") ; 
      private Button deplacer = new Button("GO") ; 
      private Button deplacerVite = new Button("GOO") ; 
      private Button deplacerTresVite = new Button("GOOO") ; 
      private Button augmenterAngle = new Button("+") ;*/ 
      private Button augmenterPierre = new Button("+ Pierre") ;
     // private Button DiminuerPierre = new Button("- Pierre") ;
      private Chenille maChenille  ;
      private Maclasse pierre;
      ArrayList<Maclasse> ListRectangles;
     
       public void init(){
        /*  this.add(reduireAngle);
          this.add(deplacer);
          this.add(deplacerVite);
          this.add(deplacerTresVite);
          this.add(augmenterAngle);*/
          this.add(augmenterPierre);
         // this.add(DiminuerPierre);
          /*reduireAngle.addActionListener(this) ;
          deplacer.addActionListener(this) ;
          deplacerVite.addActionListener(this) ;
          deplacerTresVite.addActionListener(this) ;
          augmenterAngle.addActionListener(this) ;*/
          augmenterPierre.addActionListener(this) ;
          //DiminuerPierre.addActionListener(this) ;
          //maChenille = new Chenille(15,10,45,Color.blue);
          pierre=new Maclasse();
    }
     
     
     
     
       public void actionPerformed(ActionEvent e){
          if/*(e.getActionCommand() == "-") {if (maChenille.getAngleDeVision()>0) {maChenille.setAngleDeVision((maChenille.getAngleDeVision())-5) ; repaint();}}
          else if(e.getActionCommand() == "+") {if (maChenille.getAngleDeVision()<180){maChenille.setAngleDeVision((maChenille.getAngleDeVision())+5) ; repaint();}}
          else if(e.getActionCommand() == "GO") {maChenille.deplacer(); repaint() ;}
          else if(e.getActionCommand() == "GOO") {for(int i=0 ; i<5 ; i++) {maChenille.deplacer(); repaint() ;}}
          else if(e.getActionCommand() == "GOOO") {for(int i=0 ; i<10 ; i++) {maChenille.deplacer(); repaint() ;}}
          else if*/("+ Rectangle".equals(e.getActionCommand())){	    pierre.setX((float)Math.random()*500);  pierre.setY((float)Math.random()*500);
        	    pierre.setHauteur(2);
        	    pierre.setLargeur(2);
        	    ListRectangles= new ArrayList<Maclasse>();
        	    ListRectangles.add( pierre );
        	    repaint();}
       }
     
     
       public void paint(Graphics g) {  
          g.drawRect(5,5,Cercle.xMax-5,Cercle.yMax-5);
          for(Maclasse pierre:ListRectangles) {
              pierre.dessiner(g, Color.darkGray);
         }}}

    tout ce qui est mis en commentaire n'est pas a prendre en compte c'est pour ajouter aux carrés
    Merci de votre aide et la rien ne se passe
    J'ai du mal quand même...

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Ton objet ListRectangles n'est pas instancié, il manque un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ArrayList<Rectangle>()
    quelque part.


    De plus tu vas avoir une exception du style StackOverflowException avec ce code : tu va boucler sur dessiner à l'infini.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void dessiner(Graphics g, Color c){
    	     g.setColor(c);
    	     this.dessiner(g, c);
    }

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    D'autres remarque :
    - En java on ne commence jamais le nom d'une variable par une majuscule.

    - Il faut que tu instancie un nouveau rectangle à chaque fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void actionPerformed(ActionEvent e){
          if("+ Rectangle".equals(e.getActionCommand())){	    pierre.setX((float)Math.random()*500);  pierre.setY((float)Math.random()*500);
        	    pierre.setHauteur(2);
        	    pierre.setLargeur(2);
        	    ListRectangles.add( pierre );
        	    repaint();}
       }
    Devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void actionPerformed(ActionEvent e){
          if("+ Rectangle".equals(e.getActionCommand())){	    
                Rectangle rect = new Rectangle();
    rect .setX((float)Math.random()*500);  rect .setY((float)Math.random()*500);
        	    rect .setHauteur(2);
        	    rect .setLargeur(2);
        	    ListRectangles.add( rect);
        	    repaint();}
       }
    - Ta classe de test n'a pas besoin de stocker un élément Rectangle (pierre), car tu as la liste.

    - Ton instanciation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListRectangles= new ArrayList<Maclasse>();
    devrait avoir lieu dans le constructeur de ta classe de Test

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    Merci en tout cas mais malgrés mes modification mon code ne marche pas et il n'y a plus aucune erreur de compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    				/** Un rectangle est caractérise par sa largeur et sa hauteur
                    *   la largeur et la hauteur sont des entiers positifs 
                    *  @author 
                    *  
                    */
    import java.awt.Color;
    import java.awt.Graphics; 		
    public class Maclasse {
    	private int nombre=0;	
    	private double largeur, hauteur ;
    	    private float x ; // abcisse du coté du rectangle
    	    private float y ; // ordonnee du coté du rectangle
    		public Maclasse(){this((float)(Math.random())*500,(float)(Math.random())*500,5,5);}
    	    public Maclasse (float xInit, float yInit, double l, double h){this.largeur=l;this.hauteur=h;this.x=xInit;this.y=yInit; }
    	    /** Obtenir le nombre  de Pierre
                    *   @return le nombre de pierre */
    	  public int getNombre(){return this.nombre;}
    	/** fixer le nombre de Pierre
            *   @param Nombre de Pierre */
    	  public void setNombre(int a){this.nombre=a;}
    	/** Obtenir l'ordonnée  du Rectangle
            *   @return l'ordonnée du coté en haut a gauche */
     
    	    /** Obtenir l'abscisse  du Rectangle
                    *   @return l'abscisse du coté en haut a gauche */
    	  public double getX(){return this.x;}
    	/** fixer l'abscisse  du Rectangle
            *   @param l'abscisse du coté en haut a gauche */
    	  public void setX(float d){this.x=d;}
    	/** Obtenir l'ordonnée  du Rectangle
            *   @return l'ordonnée du coté en haut a gauche */
    	  public double getY(){return this.y;}
    /** fixer l'ordonnée  du Rectangle
    *   @param l'ordonneé du coté en haut a gauche */
    	  public void setY(float a){this.y=a;}
     
    	    /** Obtenir la largeur du Rectangle
                            *   @return la largeur */
    		public double getLargeur(){return this.largeur;}
     
    			/** Obtenir la hauteur du Rectangle
                            *   @return la hauteur */
    		public double getHauteur(){return this.hauteur;}
     
    			/** fixer la largeur du Rectangle
                            *   @param la largeur */
    			public void setLargeur(double l){this.largeur=l;}
     
    			/** fixer la hauteur du Rectangle
                            *   @param la hauteur */
    		public void setHauteur(double h){this.hauteur=h;}
     
    		public double surface(){return this.hauteur*this.largeur;}
     
     
    			/** Dessiner autant de d'objet sur le terrain que voulu */
    		//public void Terrain(Color c,){for(int i=0 ; i<this.nombre ; i++) }
     
    		public void dessiner(Graphics g, Color c){
    	         g.setColor(c);
    	         /*for(int i=0;i<nombre;i++){*/g.drawRect((int)this.getX(),(int)this.getY(), (int)(this.getLargeur()), (int)this.getHauteur());
    	     this.dessiner(g, c);}
    			//} 
    		}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    	import java.applet.Applet;
    import java.awt.*;
     
    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.* ;
    import java.util.ArrayList;
     
    public class TestMaclasse extends Applet implements ActionListener{
      /*private Button reduireAngle = new Button("-") ; 
      private Button augmenterPierre = new Button("+ Pierre") ;
     // private Button DiminuerPierre = new Button("- Pierre") ;
     // private Chenille maChenille  ;
      private Maclasse pierre;
      //
      ArrayList<Maclasse> ListRectangles;
      
       public void init(){
        /*  this.add(reduireAngle);
          this.add(deplacer);
          this.add(deplacerVite);
          this.add(deplacerTresVite);
          this.add(augmenterAngle);*/
          this.add(augmenterPierre);
         // this.add(DiminuerPierre);
          /*reduireAngle.addActionListener(this) ;
          deplacer.addActionListener(this) ;
          deplacerVite.addActionListener(this) ;
          deplacerTresVite.addActionListener(this) ;
          augmenterAngle.addActionListener(this) ;*/
          augmenterPierre.addActionListener(this) ;
          //DiminuerPierre.addActionListener(this) ;
          //maChenille = new Chenille(15,10,45,Color.blue);
          pierre=new Maclasse();
          ListRectangles= new ArrayList<Maclasse>();
    }
     
     
     
     
       public void actionPerformed(ActionEvent e){
     
     
       public void paint(Graphics g) {  
          g.drawRect(5,5,Cercle.xMax-5,Cercle.yMax-5);
          for(Maclasse pierre :ListRectangles) {
              this.pierre.dessiner(g, Color.BLUE);
         }}
     
     
     
     
    }

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Alors, j'ai pris 5 minutes pour améliorer un peu ton code.
    -> supprimer ce qui sert à rien
    -> passer de AWT à Swing
    -> Faire en sorte que ça fonctionne

    MaClasse.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    /** 
     * Un rectangle est caractérise par sa largeur et sa hauteur
     * la largeur et la hauteur sont des entiers positifs 
     * @author 
     */
    import java.awt.Color;
    import java.awt.Graphics;
     
    public class MaClasse {
    	private int largeur;
    	private int hauteur;
    	private int x; // abcisse du coté du rectangle
    	private int y; // ordonnee du coté du rectangle
    	private Color color;
     
    	public MaClasse() {
    		this(0, 0, 10, 10);
    	}
     
    	public MaClasse(int x, int y, int l, int h) {
    		this.largeur = l;
    		this.hauteur = h;
    		this.x = x;
    		this.y = y;
    	}
     
    	/**
             * Obtenir l'ordonnée du Rectangle
             * 
             * @return l'ordonnée du coté en haut a gauche
             */
     
    	/**
             * Obtenir l'abscisse du Rectangle
             * 
             * @return l'abscisse du coté en haut a gauche
             */
    	public int getX() {
    		return this.x;
    	}
     
    	/**
             * fixer l'abscisse du Rectangle
             * 
             * @param l
             *            'abscisse du coté en haut a gauche
             */
    	public void setX(int x) {
    		this.x = x;
    	}
     
    	/**
             * Obtenir l'ordonnée du Rectangle
             * 
             * @return l'ordonnée du coté en haut a gauche
             */
    	public int getY() {
    		return this.y;
    	}
     
    	/**
             * fixer l'ordonnée du Rectangle
             * 
             * @param l
             *            'ordonneé du coté en haut a gauche
             */
    	public void setY(int y) {
    		this.y = y;
    	}
     
    	/**
             * Obtenir la largeur du Rectangle
             * 
             * @return la largeur
             */
    	public int getLargeur() {
    		return this.largeur;
    	}
     
    	/**
             * Obtenir la hauteur du Rectangle
             * 
             * @return la hauteur
             */
    	public int getHauteur() {
    		return this.hauteur;
    	}
     
    	/**
             * fixer la largeur du Rectangle
             * 
             * @param la
             *            largeur
             */
    	public void setLargeur(int l) {
    		this.largeur = l;
    	}
     
    	/**
             * fixer la hauteur du Rectangle
             * 
             * @param la
             *            hauteur
             */
    	public void setHauteur(int h) {
    		this.hauteur = h;
    	}
     
    	public int surface() {
    		return this.hauteur * this.largeur;
    	}
     
    	public void dessiner(Graphics g) {
    		g.setColor(getColor());
    		g.drawRect(getX(), getY(), getLargeur(), getHauteur());
    	}
     
    	public Color getColor() {
    		return color;
    	}
     
    	public void setColor(Color color) {
    		this.color = color;
    	}
    }

    TestMaClasse.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
    import javax.swing.JApplet;
    import javax.swing.JButton;
    import javax.swing.JPanel;
     
    public class TestMaclasse extends JApplet {
    	private JPanel panelDeBoutons;
    	private JButton augmenterPierre;
    	private JPanel canvas;
    	private ArrayList<MaClasse> listRectangles;
     
    	private class Canvas extends JPanel {
    		public Canvas() {
    			super();
    		}
     
    		@Override
    		public void paintComponent(Graphics g) {
    			super.paintComponent(g); // Pour avoir le background de la couleur qu'on souhaite
    			for (MaClasse pierre : listRectangles) {
    				pierre.dessiner(g);
    			}
    		}
    	}
     
    	public TestMaclasse() {
    		listRectangles = new ArrayList<MaClasse>();
    	}
     
    	@Override
    	public void init() {
    		setSize(600, 600);
    		setLayout(new BorderLayout());
    		panelDeBoutons = new JPanel();
    		panelDeBoutons.setLayout(new FlowLayout(FlowLayout.CENTER));
    		augmenterPierre = new JButton("+ Pierre");
    		augmenterPierre.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				int w = canvas.getWidth(); // Largeur du canvas
    				int h = canvas.getHeight(); // Hauteur du canvas
    				MaClasse rect = new MaClasse();
    				rect.setX((int) (Math.random() * w));
    				rect.setY((int) (Math.random() * h));
    				rect.setHauteur(2);
    				rect.setLargeur(2);
    				rect.setColor(Color.BLUE);
    				listRectangles.add(rect);
    				canvas.repaint();
    			}
    		});
     
    		panelDeBoutons.add(augmenterPierre);
     
    		canvas = new Canvas();
    		canvas.setBackground(Color.WHITE);
    		add(panelDeBoutons, BorderLayout.NORTH);
    		add(canvas, BorderLayout.CENTER);
    		invalidate();
    		validate();
    	}
     
     
    }

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    Vraiment merci.
    Pourriez vous me donner quelques précision(ou un lien) sur l’utilité de certaines commandes comme la différences en Applet ou JApplet , a quoi sert Canevas ,
    Et je ne savais pas que l'on pouvais faire une classe dans une classe
    Cordialement

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par tonytrua Voir le message
    La différences en Applet ou JApplet
    Lien de FAQ : Quel sont les différences entre Awt et Swing ?
    Mais la vrai raison du changement est que je ne connais pas AWT .

    Citation Envoyé par tonytrua Voir le message
    a quoi sert Canevas
    Canvas matérialise la zone de dessin. Ton programme va dessiner sur ce composant et pas sur l'applet toute entière.

    Citation Envoyé par tonytrua Voir le message
    Et je ne savais pas que l'on pouvais faire une classe dans une classe
    Autre lien de FAQ : Qu'est-ce qu'une classe interne ?

    Bon apprentissage !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/03/2008, 16h13
  2. DTD - probleme pour definir des differentes branches
    Par jeanpol dans le forum Valider
    Réponses: 1
    Dernier message: 11/07/2005, 20h00
  3. Réponses: 7
    Dernier message: 16/04/2005, 09h55
  4. [NetBeans 4.0 Beta 2]Probleme pour monter des jars
    Par nicoo dans le forum NetBeans
    Réponses: 2
    Dernier message: 19/11/2004, 15h14
  5. Réponses: 5
    Dernier message: 07/07/2004, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo