Bonsoir,

Tout d'abord, désolé pour le titre qui peut faire peur, mais vous allez voir que mon problème est tout bête à comprendre.

En effet, pour alléger mon code et le séparer, j'ai procédé comme ceci :
- Une fenêtre jeu qui contient les bases d'une fenêtre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
public class FenetreJeu extends JFrame
{
	public FenetreJeu(String titre)
	{
		super(titre);
		[...]
		FenetreMenu menu = new FenetreMenu(this);
	}
}
- Une fenêtre menu qui contient toutes les informations d'une fenêtre :
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
 
public class FenetreMenu extends JFrame
{	
	private JButton nouvellePartie;
	private JButton chargerPartie;
	private JButton options;
	private JButton quitter;
 
	private FenetreJeu fen;
 
	public FenetreMenu(FenetreJeu fen)
	{
		System.out.println("Test");
		this.fen = fen;
		Container c = fen.getContentPane();
		c.removeAll();
		c.add(new FondEcran("name.jpg"));
		c.add(getPanelCentre(),BorderLayout.CENTER);
		c.add(getPanelSud(),BorderLayout.SOUTH);
		c.revalidate();
	}
 
[...]
 
	public class FondEcran extends JPanel
	{
		private Image fond_ecran;
 
		public FondEcran(String nom)
		{
	        fond_ecran = new ImageIcon("name.jpg").getImage();
		}
 
		public void paintComponent(Graphics g)
		{
			super.paintComponent(g);
			System.out.println("Test");
			int larg = fen.getWidth();
			int haut = fen.getHeight();
			g.drawImage(fond_ecran, 0, 0, larg,haut, fen);
		}
	}
}
Et le soucis est que le paintComponent n'est pas appelé implicitement comme il devrait l'être. La console n'affiche pas le "test" demandé.

Voici ce que j'ai essayé :

- fen.setContentPane(new FondEcran("name.jpg")); : L'image s'affiche mais pas les Panel, cela freeze mon constructeur.
- Appeler le paintComponent dans le constructeur de FondEcran en transférant les Graphics du container (c.getGraphics() : Le "test" s'affiche mais pas l'image.

Voilà, je ne sais pas quoi faire d'autre, si vous avez une solution ou un autre moyen de séparer le code, je vous en serai très reconnaissant

Cordialement,

Un étudiant en panique

EDIT : Le chemin de l'image est bon, si je fais ma inner-class FondEcran dans FenetreJeu, l'image s'affiche puis laisse place à FenetreMenu (logique, puisque je fais un removeAll()). Je ne peux pas me passer de removeAll() puisque je dois faire plusieurs fenêtres.