bonjour à tous .
voilà mon problème .... je dois associer à une valeur de "force d'un personnage", une image , et pour de futurs fonctionnalitées je dois en fait afficher des boutons... pour cela je crée une classe BoutonImage
mes valeurs de forces sont compris entre 1 et 6 dans un tableau... valeurs prises aléatoirement bien sur pour compliqué le tout....
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 public class BoutonImage extends JButton { private String adresseImage; private String name; private Image img; public BoutonImage(String str){ super(str); this.adresseImage= str; try { img = ImageIO.read (new File(str)); } catch (IOException e) { e.printStackTrace(); } } public void paintComponent(Graphics g){ Graphics2D g2d = (Graphics2D)g; g2d .drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this); } }
pour l'instant il n'y a pas de problèmes... donc pour afficher plusieurs BoutonImages en fonctions des valeurs de force[] je définit un tbleau de BoutonImage comme tel :
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 public void affichagemonstre(){ int lower = 1; int higher = 6; int nombremonstres = (int)(Math.random() * (higher+1-lower)) + lower; int[] force = new int[nombremonstres]; System.out.println("il y a "+nombremonstres+"monstres"); for (int i = 0; i < nombremonstres; i++) { int max = 0; do { force[ i ] = (int)(Math.random() * (higher+1-lower)) + lower; max = 0; for( int n_force = i - 1 ; n_force >= 0 ; --n_force ) { if( force[ n_force ] == force[ i ] ) { ++max; } } } while( max > i ); System.out.println("monstre n°"+nombremonstres+",force niveau"+force[i]); }
puis je continue dans la méthode affichagemonstre avec:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public BoutonImage monster; public BoutonImage monster2; public BoutonImage monster3; public BoutonImage monster4; public BoutonImage monster5; public BoutonImage monster6; public BoutonImage[]monser1={monster,monster2,monster3,monster4,monster5,monster6};
et voici la méthode MonstresImages:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int decal=0;/*mes Bouton sont situés sur une ligne définie par y=115 ils sont sur une image de plateau donc je dois les décaler d'une valeur x à chaque fois*/ for(int j=0;j<force.length;j++){ getContentPane().setLayout(null); MonstresImages(force[j],monser1[j]); BoutonImage b=monser1[j]; b.setBounds (610+decal,115,75,75); add(b); this.setVisible(true); decal=decal+75; }}
et quand je lance tout ça .... ça me fais plein de jolie lignes d'erreur .... en me surlignant le b.setBounds .... et je ne comprend pas pourquoi, je n'arrive pas non plus à trouver un problème similaire sur internet... pourriez-vous m'éclairer sur le pourquoi du comment ?^^Merci d'avance
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 public void MonstresImages(int a,BoutonImage b){ if (a==1){ b=new BoutonImage("troll.gif"); b.setBorder(null); //perso.addActionListener(new Bouton11Listener()); } if (a==3){ b=new BoutonImage("foret(lv3).gif"); b.setBorder(null); //perso.addActionListener(new Bouton11Listener()); } if (a==4){ getContentPane().setLayout(null); b=new BoutonImage("foret(lv2).gif"); b.setBorder(null); //perso.addActionListener(new Bouton11Listener()); } if (a==5){ getContentPane().setLayout(null); b=new BoutonImage("foret(lv4).gif"); b.setBorder(null); //perso.addActionListener(new Bouton11Listener()); } if (a==6){ getContentPane().setLayout(null); b=new BoutonImage("foret(lv5).gif"); b.setBorder(null); //perso.addActionListener(new Bouton11Listener()); } if (a==2){ getContentPane().setLayout(null); b=new BoutonImage("troll.gif"); b.setBorder(null); //perso.addActionListener(new Bouton11Listener()); } }
Partager