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.

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[];
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
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