Bonjour voici mon probleme

alors j'ai une première class avec mon main qui défini le la JFrame et le CardLayout,

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
package Accueil;
 
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.io.IOException;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
 
 
 
 
 
 
public class Accueil {
 
	//déclare les composants
	JFrame cadre;
 
	//declare les class utiliser 
	public voirRecette recette;
	public voirAccueil accueil; 
 
	//déclare un cardLayoute et un panel
	public CardLayout gestionnaireDesCartes = new CardLayout();
	public JPanel panneauPrincipal = new JPanel();
 
 
	//récupere la dimmension de l'ecran
	Toolkit kit = Toolkit.getDefaultToolkit();
	Dimension dimensionEcran = kit.getScreenSize();
	int largeur = dimensionEcran.width;
	int hauteur = dimensionEcran.height;
 
 
	Accueil() throws IOException
	{
 
		//Cree la Frame
		cadre = new JFrame();
 
		//Cree le panel associe
		panneauPrincipal = new JPanel();
		//Cree les class d'affichage
		accueil = new voirAccueil();
		recette = new voirRecette();
 
		//affecte un titre au cadre
		cadre.setTitle("BookCook v.1");
		//Affecte la fenetre au milieu de l'écran et lui affecte une taille
		cadre.setBounds((largeur-900)/2, (hauteur-650)/2,900,650);
 
 
		//ajoute le panneua principal à la frame
		cadre.add(panneauPrincipal);
		//parametre le cardLayout
		panneauPrincipal.setLayout(gestionnaireDesCartes); 
		panneauPrincipal.setBounds(0,0,900,650); //taille de la carte
		panneauPrincipal.setOpaque(false);//rend le pannea tranparent 
		panneauPrincipal.add(accueil, "accueil");//renvoie a une carte
		panneauPrincipal.add(recette, "recette");//renvoie a une carte
 
		//rend la fenetre visible 
		cadre.setVisible(true);
		//bloque le redimentionnement
		cadre.setResizable(false);
		//ferme corectement l'application
		cadre.setDefaultCloseOperation(cadre.EXIT_ON_CLOSE);
 
	}
 
 
	//permet l'affichage de la fenêtre
	public static void main(String[] args)
	{
		try {
			Accueil accueil = new Accueil();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
 
}
grâce a cette class j'affiche mon premier panel nomme voir accueil
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
 
package Accueil;
 
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.*;
import java.io.*;
 
import javax.imageio.*;
import javax.swing.*;
 
 
 
 
 
 
 
public class voirAccueil extends JPanel implements MouseListener, ActionListener
{
	Accueil parent; //une référence à la connection
 
	//declare les variables
	private BufferedImage image, image2, image3, image4, image5, image6, image7, image8, image9, image10, image11, image12 , image13; 
 
	//déclare les bouttons 
	JButton recherche, liste, ajoutRecette, categorie, accesSite, generique;
 
	Color couleur = Color.BLACK;
 
	voirAccueil() throws IOException
	{
		//insert uen image de fond 
		image = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\fondAccueil.png"));
 
		//lit les image pour les inserer au boutton
		image2 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Brechercher.png"));
		image3 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bliste.png"));
		image4 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bcategorie.png"));
		image5 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\BajoutRecette.png"));
		image6 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\BaccesSite.png"));
		image7 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bgenerique.png"));
 
		//lit les images pour les inserer au bouton lors du passage de la souris
		image8 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Brechercher2.png"));
		image9 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bliste2.png"));
		image10 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bcategorie2.png"));
		image11 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\BajoutRecette2.png"));
		image12 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\BaccesSite2.png"));
		image13 = ImageIO.read(voirAccueil.class.getResourceAsStream("..\\image\\Bgenerique2.png"));
 
		//Cree les bouton et ajoute l'image charger préalablement
		recherche = new JButton(new ImageIcon(image2, null));
		liste = new JButton(new ImageIcon(image3, null));
		ajoutRecette = new JButton(new ImageIcon(image4, null));
		categorie = new JButton(new ImageIcon(image5, null)); 
		accesSite = new JButton(new ImageIcon(image6, null));
		generique = new JButton(new ImageIcon(image7, null));
 
		//desactive le gestionnaire du panel
		setLayout(null);
		//ajoute les bonton au panel
		add(recherche).setBounds(200, 200, 218, 47);
		add(liste).setBounds(476, 200, 218, 47);
		add(ajoutRecette).setBounds(200, 305, 218, 47);
		add(categorie).setBounds(476, 305, 218, 47);
		add(accesSite).setBounds(200, 410, 218, 47);
		add(generique).setBounds(476, 410, 218, 47);
 
		//modifie l'apparance des bouton pour arrondir le bouton, le rendre transparent et enlever la bordure
		recherche.setFocusPainted(false);
		recherche.setContentAreaFilled(false);
		recherche.setBorderPainted(false);
		liste.setFocusPainted(false);
		liste.setContentAreaFilled(false);
		liste.setBorderPainted(false);
		ajoutRecette.setFocusPainted(false);
		ajoutRecette.setContentAreaFilled(false);
		ajoutRecette.setBorderPainted(false);
		categorie.setFocusPainted(false);
		categorie.setContentAreaFilled(false);
		categorie.setBorderPainted(false);
		accesSite.setFocusPainted(false);
		accesSite.setContentAreaFilled(false);
		accesSite.setBorderPainted(false);
		generique.setFocusPainted(false);
		generique.setContentAreaFilled(false);
		generique.setBorderPainted(false);
 
		//ajoute un listener au bouton
		recherche.addMouseListener(this);
		liste.addMouseListener(this);
		ajoutRecette.addMouseListener(this);
		categorie.addMouseListener(this);
		accesSite.addMouseListener(this);
		generique.addMouseListener(this);
		//ajoute un listener pour le clic sur un bouton
		recherche.addActionListener(this);
		liste.addActionListener(this);
		ajoutRecette.addActionListener(this);
		categorie.addActionListener(this);
		accesSite.addActionListener(this);
		generique.addActionListener(this);
	}
 
	//positionne l'image
	 public void paintComponent(Graphics surface) 
	 {
	      surface.drawImage(image, 0, 0, 900, 650, null);   
	  }
 
 
	public void mouseClicked(MouseEvent arg0) {}
	public void mouseEntered(MouseEvent evt) 
	{
		//permet de savoir si une action c'est derouler sur le composant
		Object source = evt.getSource();
		//permet de changer l'image quand la souris passe au desus du bouton
		if(source == recherche){recherche.setIcon(new ImageIcon(image8, null));}
		if(source == liste){liste.setIcon(new ImageIcon(image9, null));}
		if(source == ajoutRecette){ajoutRecette.setIcon(new ImageIcon(image11, null));}
		if(source == categorie){categorie.setIcon(new ImageIcon(image10, null));}
		if(source == accesSite){accesSite.setIcon(new ImageIcon(image12, null));}
		if(source == generique){generique.setIcon(new ImageIcon(image13, null));}
	}
	public void mouseExited(MouseEvent evt)
	{
		//permet de savoir si une action c'est derouler sur le composant
		Object source = evt.getSource();
		//permet de changer l'imaga quand la souris sort du champs du bouton
		if(source == recherche){recherche.setIcon(new ImageIcon(image2, null));}
		if(source == liste){liste.setIcon(new ImageIcon(image3, null));}
		if(source == ajoutRecette){ajoutRecette.setIcon(new ImageIcon(image5, null));}
		if(source == categorie){categorie.setIcon(new ImageIcon(image4, null));}
		if(source == accesSite){accesSite.setIcon(new ImageIcon(image6, null));}
		if(source == generique){generique.setIcon(new ImageIcon(image7, null));}
	}
	public void mousePressed(MouseEvent arg0) {}
	public void mouseReleased(MouseEvent arg0) {}
 
	public void actionPerformed(ActionEvent evt) 
	{
		//permet de savoir si une action c'est derouler sur le composant
		Object source = evt.getSource();
		//permet de realiser une action si un evenement est detecté
		if(source == recherche)
		{
			parent.gestionnaireDesCartes.show(parent.panneauPrincipal,"accueil");
		}
	}  
 
 
}
et a partir d'un des boutons de cette 2eme class voirAccueil je voudrais afficher le 2eme bouton mais actionListener ne fonctionne pas comme il faut
voici l'erreur obtenu
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
 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Accueil.voirAccueil.actionPerformed(voirAccueil.java:149)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)