Bonjour,
Dans le cadre d'un projet, j'ai fais une petite application de jeu, basé sur le fait de pouvoir créer des objets de différents types.
Mon soucis se pose sur la partie graphique. J'ai un JPanel, Grille, où devront être affiché mes éléments. Ces éléments sont stockés dans la classe Modèle, dans un ArrayList.
On m'a conseillé de mettre ses éléments également dans la classe Grille, sous forme d'ArrayList, et de redéfinir la méthode paintComponent pour boucler sur les éléments de la liste, et de les afficher.
Ca donne quelque chose comme ça :
Le problème c'est que si j'ajoute un nouvel élément dans la liste, alors que la boucle for du paintComponent est lancé, parfois ça plante.
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 public class GrilleCentre extends JPanel{ private ArrayList<Unite> listeCampsUn = new ArrayList<Unite>(); int xcourant = 0; int ycourant = 10; public void paintComponent(Graphics g) { super.paintComponent(g); Image img; int x=0; int y=0; for(Unite u : listeCampsUn){ img = new ImageIcon("image/unite.jpeg").getImage(); x = (Integer)u.getPropriete("x"); y = (Integer)u.getPropriete("y"); g2d.drawImage(img, x, y, this); } } public void ajouterUnite(Unite uni){ if (listeCampsUn.size()%5 == 0) { ycourant=0; } listeCampsUn.add(uni); uni.setPropriete("x", xcourant); uni.setPropriete("y", ycourant); repaint(); ycourant+=33; }
Il y a une autre méthode ? (Me dites pas simplement oui^^)
Merci !
Partager