Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2047 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Besoin d'aide: pb affichage rectangle (trivial surement)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide: pb affichage rectangle (trivial surement)

n°892440
Pwill
Deux fois Né
Posté le 07-11-2004 à 12:53:35  profilanswer
 

Hello,  
j'ai 2 classes Jetons et Grille ainsi:

Code :
  1. public class Grille extends JPanel
  2. {
  3. private int x, y ;
  4. private int nblignes, nbcolonnes ;
  5. private int largeur, hauteur ;
  6.  public Grille()
  7.  {
  8.   this.x=0;
  9.   this.y=0;
  10.   this.nblignes=5;
  11.   this.nbcolonnes=5;
  12.   this.largeur=50;
  13.   this.hauteur=50;
  14.   this.setLayout(new BorderLayout()) ;
  15.  }
  16.  public void paint(Graphics g)
  17.  {
  18.   g.setColor(Color.BLACK);
  19.   for(int i=0 ; i<=nblignes ; i++)
  20.   {
  21.    g.drawLine(x, i*hauteur, x+nbcolonnes*largeur, i*hauteur) ;
  22.   }
  23.   for(int i=0 ; i<=nbcolonnes ; i++)
  24.   {
  25.    g.drawLine(i*largeur, y, i*largeur, y+nbcolonnes*hauteur) ;
  26.   }
  27.   Jeton tabJeton[][]= new Jeton[nbcolonnes][nblignes];
  28.   for (int i=0; i<nbcolonnes; i++){
  29.    for (int j=0; j>nblignes; j++){
  30.     tabJeton[i][j]= new Jeton(x+2+i*nbcolonnes, y+2+i*nblignes, Color.RED, 0, 46, 46);
  31.     }
  32.    }
  33.   }
  34. }


Code :
  1. public class Jeton extends Rectangle2D.Double
  2. {
  3. Color couleur ;
  4. int x, y ; // coordonnées du point haut gauche du jeton
  5. int numero ; // numéro jeton affiché
  6. int largeur, hauteur ;
  7. public Jeton()
  8. {
  9.  couleur=Color.RED ;
  10.  numero=0 ;
  11.  largeur=46 ; // on suppose une grille avec des cases de 50x50,
  12.  hauteur=46 ; // 2 pixels de marge
  13. }
  14. public Jeton(int x, int y, Color c, int num, int larg, int haut)
  15. {
  16.  super(x, y,larg,haut) ;
  17.  couleur=c ;
  18.  numero=num ;
  19.  largeur=larg ;
  20.  hauteur=haut ;
  21. }
  22. public void paint(Graphics g)
  23. {
  24.  g.setColor(couleur) ;
  25.  g.fillRect((int) x, (int) y, (int) largeur, (int) hauteur) ;
  26.  g.setColor(Color.BLACK) ;
  27.  g.drawString(""+numero, (int) (x+largeur/2), (int) (y+hauteur/2)) ;
  28. }
  29. }


 
Le problème est que je ne parviens pas à afficher de rectangle coloré dans les cases de la Grille. Vous voyez pourquoi ? J'utilise mal les 2 méthodes paint ?
 
Merci d'éclairer un débutant :jap:


Message édité par Pwill le 07-11-2004 à 14:45:00
mood
Publicité
Posté le 07-11-2004 à 12:53:35  profilanswer
 

n°892656
the real m​oins moins
Posté le 07-11-2004 à 19:49:39  profilanswer
 

euh

public class Jeton extends Rectangle2D.Double

c'est quoi l'idée derrière ce choix .... pour le moins discutable !?

n°893014
Pwill
Deux fois Né
Posté le 08-11-2004 à 10:14:34  profilanswer
 

Ca c'est le prof qui nous a présenté une correction avec Rectangle2D.Double.
 
Sinon lorsque je déclare une grille elle s'affiche correctement mais aucun jeton n'apparrait (je devrais voir des carrés rouges à l'intérieur ??)

n°893027
phnatomass
Je m'empare de ton esprit !!
Posté le 08-11-2004 à 10:32:11  profilanswer
 

Essaye ca!

Code :
  1. public class Grille extends JPanel
  2. {
  3.     private int x, y ;
  4.     private int nblignes, nbcolonnes ;
  5.     private int largeur, hauteur ;
  6.     private Jeton tabJeton[][]= new Jeton[nbcolonnes][nblignes];
  7.    
  8.     public Grille()
  9.     {
  10.         this.x=0;
  11.         this.y=0;
  12.         this.nblignes=5;
  13.         this.nbcolonnes=5;
  14.         this.largeur=50;
  15.         this.hauteur=50;
  16.         this.setLayout(new BorderLayout()) ;
  17.         for (int i=0; i<nbcolonnes; i++){ 
  18.             for (int j=0; j>nblignes; j++){ 
  19.                 tabJeton[i][j] = new Jeton(TES PARAMETRES);
  20.             } 
  21.        } 
  22.     }
  23.     public void paint(Graphics g)
  24.     {
  25.         g.setColor(Color.BLACK);
  26.         for(int i=0 ; i<=nblignes ; i++)
  27.         {
  28.             g.drawLine(x, i*hauteur, x+nbcolonnes*largeur, i*hauteur) ;
  29.         }
  30.    
  31.         for(int i=0 ; i<=nbcolonnes ; i++)
  32.         {
  33.             g.drawLine(i*largeur, y, i*largeur, y+nbcolonnes*hauteur) ;
  34.         }
  35.        
  36.        
  37.         for (int i=0; i<nbcolonnes; i++){
  38.             for (int j=0; j>nblignes; j++){
  39.                 (tabJeton[i][j]).paint(g);
  40.                 }
  41.             }
  42.     }
  43. }


Message édité par phnatomass le 08-11-2004 à 11:28:49
n°893030
nraynaud
lol
Posté le 08-11-2004 à 10:34:21  profilanswer
 

pourquoi étendre JPanel ?


---------------
trainoo.com, c'est fini
n°893038
phnatomass
Je m'empare de ton esprit !!
Posté le 08-11-2004 à 10:42:32  profilanswer
 

Pwill a toi de répondre.
Moi je me suis juste contenter de faire en sorte que ces "jetons" s'affichent.

n°893042
nraynaud
lol
Posté le 08-11-2004 à 10:44:41  profilanswer
 

ah merde 'scuze phna, c'est un prof neuneu et ça souffre pas d'explication.


---------------
trainoo.com, c'est fini
n°893048
phnatomass
Je m'empare de ton esprit !!
Posté le 08-11-2004 à 10:50:53  profilanswer
 

Le plus éffrayant comme l'a signalé Moins Moins c'est l'implémentation de sa classe Jeton qui hérite de Rectangle2D.Double.

n°893064
nraynaud
lol
Posté le 08-11-2004 à 11:02:11  profilanswer
 

phna > je dois avouer que je ne suis hostensiblement *pas* allé voir de quoi il en retournait dans la javadoc, parce que je suis un peu fragile en ce moment. Mais je subodore ...
 
c'est comme de faire hériter son composant de MachinListener.


---------------
trainoo.com, c'est fini
n°893214
Pwill
Deux fois Né
Posté le 08-11-2004 à 13:30:19  profilanswer
 

Oui ben moi je suis bêtement que le prof nous explique ou nous montre de sa solution...  :pt1cable:  
 
J'essaye ca tout à l'heure ! Merci :jap:
 
Ben sinon ma classe Grille est un JPanel utlisé dans un Applet que je n'ai pas indiqué... vu que le java c'est pas encore très net dans ma tête... je ne peux en dire plus.


Message édité par Pwill le 08-11-2004 à 13:32:18
mood
Publicité
Posté le 08-11-2004 à 13:30:19  profilanswer
 

n°893600
Pwill
Deux fois Né
Posté le 08-11-2004 à 19:23:08  profilanswer
 

J'ai essayé de reprendre proprement le code avec ce que proposait phnatomass, mais rien de ce que j'ai essayé ne marche.
Je ne vois pas pourquoi je n'ai pas de rectangle rouge qui s'affiche dans les cases.
Je suppose que ca vient de l'instanciation des jetons ??  
Comment voir le problème avec le debugger sous eclipse (je ne sais pas faire) ?
 

Code :
  1. public class Grille extends JPanel
  2. {
  3. private final int x=0;
  4. private final int y=0; ;
  5. private int nbLignes, nbColonnes ;
  6. int largeur, hauteur ;
  7. Jeton tabJeton[][];
  8.  public Grille()
  9.  {
  10.   this.nbLignes=3;
  11.   this.nbColonnes=3;
  12.   this.largeur=75;
  13.   this.hauteur=75;
  14.   this.creerJetons();
  15.  }
  16. private void creerJetons(){
  17.   tabJeton = new Jeton[nbLignes][nbColonnes];
  18.   for (int i = 0; i < nbLignes; i++)
  19.    for (int j = 0; j < nbColonnes; j++)
  20.     tabJeton[i][j] = new Jeton(j + i*nbColonnes,
  21.     x+j*largeur + 3, Color.RED, y+i*hauteur + 3,
  22.     largeur - 6, hauteur - 6);
  23.   tabJeton[0][0] = null;
  24. }
  25.  public void paint(Graphics g)
  26.  {
  27.   g.setColor(Color.BLACK);
  28.   for(int i=0 ; i<=nbLignes ; i++)
  29.   {
  30.    g.drawLine(x, i*hauteur, x+nbColonnes*largeur, i*hauteur) ;
  31.   }
  32.   for(int i=0 ; i<=nbColonnes ; i++)
  33.   {
  34.    g.drawLine(i*largeur, y, i*largeur, y+nbColonnes*hauteur) ;
  35.   }
  36.   for (int i=0; i<nbColonnes; i++){ 
  37.     for (int j=0; j>nbLignes; j++){ 
  38.      if (tabJeton[i][j] != null) tabJeton[i][j].paint(g); 
  39.    } 
  40.   }
  41.  }
  42. }


 

Code :
  1. public class Jeton extends Rectangle2D.Double
  2. {
  3. Color couleur ;
  4. int numero ;
  5. public Jeton(double x0, double y0, Color c, int num, double largeur, double hauteur)
  6. {
  7.  super(x0, y0, largeur, hauteur);
  8.  couleur=c ;
  9.  numero=num ;
  10. }
  11. public void setPosition(double x, double y){
  12.   this.x = x;
  13.   this.y = y;
  14.  }
  15. public void paint(Graphics g)
  16. {
  17.  g.setColor(Color.RED) ;
  18.  g.fillRect((int) x, (int) y, (int) width, (int) height) ;
  19.  g.setColor(Color.BLACK) ;
  20.  //g.drawString(""+numero, (int) (x+width/2), (int) (y+height/2)) ;
  21. }
  22. }


 
Merci de votre aide dans tous les cas ;)


Message édité par Pwill le 08-11-2004 à 19:23:30
n°893631
phnatomass
Je m'empare de ton esprit !!
Posté le 08-11-2004 à 20:19:28  profilanswer
 

public class Grille extends JPanel
{
 private final int x=0;  
 private final int y=0; ;
 private int nbLignes, nbColonnes ;
 int largeur, hauteur ;
 Jeton tabJeton[][];
  public Grille()
  {
   this.nbLignes=3;
   this.nbColonnes=3;
   this.largeur=75;
   this.hauteur=75;
   this.creerJetons();
  }
 
 private void creerJetons(){
   tabJeton = new Jeton[nbLignes][nbColonnes];
   
   for (int i = 0; i < nbLignes; i++)
    for (int j = 0; j < nbColonnes; j++)
     tabJeton[i][j] = new Jeton(j*largeur,  
     i*hauteur, Color.RED, y+i*hauteur + 3,  
     largeur - 6, hauteur - 6);
   tabJeton[0][0] = null;
 }
 
 
  public void paint(Graphics g)
  {
   g.setColor(Color.BLACK);
   for(int i=0 ; i<=nbLignes ; i++)
   {
    g.drawLine(x, i*hauteur, x+nbColonnes*largeur, i*hauteur) ;
   }
   
   for(int i=0 ; i<=nbColonnes ; i++)
   {
    g.drawLine(i*largeur, y, i*largeur, y+nbColonnes*hauteur) ;
   }
   
   for (int i=0; i<nbColonnes; i++){  
     for (int j=0; j < nbLignes; j++){  
      if (tabJeton[i][j] != null) tabJeton[i][j].paint(g);  
    }  
   }
  }
}


Message édité par phnatomass le 08-11-2004 à 20:22:22
n°894235
Pwill
Deux fois Né
Posté le 09-11-2004 à 13:54:59  profilanswer
 

Je te remercie beacoup, j'ai pas étudié plus que ca encore mais ca marche. Y'a plus qu'a arranger le tout et avancer dans le taquin...  
 
:jap: Merci ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Besoin d'aide: pb affichage rectangle (trivial surement)

 

Sujets relatifs
Forcer l'affichage d'un nombre x.xxAide script python
Petite aide pour debutant :)aide sur programmation pascal
Formulaire de l'aide SVP merciJuste une petite aide svp
Affichage aléatoire d'un des enregistrements du résultat d'une requèteErreur compilation (besoin d'aide)
affichage d'une jlist non rafraîchie après des modifs 
Plus de sujets relatifs à : Besoin d'aide: pb affichage rectangle (trivial surement)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR