Bonjour,
voilà, je fais un affichage graphique en Swing à base de JLabels qui contiennent des ImageIcon.
Le but final est d'avoir un décor avec un personnage qui peut s'y promener, et, changer le décor quand le personnage arrive au bord de l'image.
Aperçu de ce que j'ai pour l'instant :
Les problèmes:
- J'aimerais faire en sorte que lorsque le personnage passe devant un objet, il apparaisse devant, mais qu'il apparaisse derrière lorsqu'il passe derrière (lorsqu'il remonte). Or la "priorité" des JPanel est définie par l'ordre dans lequel ils sont insérés.
Y a-t-il une façon de changer cet ordre sans avoir à tous les retirer, et tous les remettre dans un ordre différent ?
- Pour faire changer de décor, il faut que je vide le JComponent de l'image. J'ai cherché dans la doc, mais je n'ai rien vu qui ressemblait à un clear()...
Une méthode pour faire ceci existe-t-elle ?
- Il est fort possible que je m'y soit mal pris dans mes choix (JPanel, JCOmponent), mais je ne sais pas vraiment faire autrement. Si vous voyez un meilleur moyen de s'y prendre, et plus pratique, n'hésitez pas à m'en faire part.
Les tableaux sont remplis en lisant des fichiers XML contenant les caractéristiques du décor.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //futur conteneur du niveau Niveau niveau; //futur conteneur des éléments de décor ElementDuDecor elements[]; //futur conteneur des obstacles du décor Obstacle obstacles[];
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 //configuration de la fenêtre setSize(800,600); setTitle("interface"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JComponent contentPane = (JComponent)getContentPane(); contentPane.setLayout(null); //fin configuration de la fenêtre //insertion du personnage contentPane.add(perso); perso.setBounds(0,200,75,75); //tempLabel,tempElement: éléments temporaires servant dans la boucle d'insertion des éléments JLabel tempLabel; ElementDuDecor tempElement; //i: itérateur int i=0; //insertion des éléments du décor while(i<(elements.length)) { tempElement=elements[i]; tempLabel=new JLabel(new ImageIcon(tempElement.nomDuFichierImage)); contentPane.add(tempLabel); tempLabel.setBounds(tempElement.x,tempElement.y,tempElement.largeur,tempElement.hauteur); i++; }//fin insertion des éléments du décor
Merci d'avance pour toute aide![]()
Partager