bonjour Chers Developpeurs,
je suis en train de developper une interface avec un menu à gauche et un menubar tout en haut.le milieu de l'interaface est le seul élement qui change selon le bouton qu'on a cliqué .aprés quelques recherches , on a trouvé que le layout qui permet de le faire est la cardLayout.
le code que j'ai developpé pour l interface est le suivant:
import java.awt.*;
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
 
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
import java.awt.event.*;
import javax.swing.event.*;
public class Accueil1 extends Frame 
{
	public Menu menufichier,menuproduit,menuachat,menufourn,menustatis,menupublip;
	public MenuItem sMenuquitter,sMenurecherchP,sMenulister,sMenuetablirCom,sMenuuComEnCours, 
	      sMenuComLivr,sMenuNFourn,sMenurecherchF,sMenuListeF,sMenuVP,sMenuVCl,sMenuVCa;
	private JPanel jContentPane;
	private JPanel PanelButtons;
	private JPanel PanelPrincip;
	private JPanel Panelfirst;
	public JPanel  AjouterClient;
	public 	JButton bNewCl,bcherchCl,bAjD,bCherchD;
 
	      public Accueil1()
	{
		super("ROM Commerce");
		initialiser();
	}
	  	void initialiser()
		{
			setLayout(new BorderLayout());
			MenuBar barredemenu=new MenuBar();
			setMenuBar(barredemenu);
		    menufichier=new Menu("Fichier");
			menuproduit=new Menu("Produit");
			menuachat=new Menu("Achat");
			menufourn=new Menu("Fournisseur");
		    menustatis=new Menu("Statistiques");
			menupublip=new Menu("Publipostage");
			barredemenu.add(menufichier);
			barredemenu.add(menuproduit);
			barredemenu.add(menuachat);
			barredemenu.add(menufourn);
			barredemenu.add(menustatis);
			barredemenu.add(menupublip);
			//Menu Fichier
		    sMenuquitter =new MenuItem("Quitter");
			menufichier.add(sMenuquitter);
			//Menu Produit
			sMenurecherchP=new MenuItem("Rechercher Produit");
			sMenulister=new MenuItem("Lister Fiches Produits");
			menuproduit.add(sMenurecherchP);
			menuproduit.add(sMenulister);
			//Menu Achat
			sMenuetablirCom=new MenuItem("etablir une commande");
			sMenuuComEnCours=new MenuItem("Commandes En cours");
			sMenuComLivr=new MenuItem("Commandes Livrés");
			menuachat.add(sMenuetablirCom);
			menuachat.add(sMenuuComEnCours);
			menuachat.add(sMenuComLivr);
			//Menu Fournisseur
			sMenuNFourn=new MenuItem("Nouveau Fournisseur");
			sMenurecherchF=new MenuItem("recherche d'un Fournisseur");
			sMenuListeF=new MenuItem("Liste Fournisseurs");
			menufourn.add(sMenuNFourn);
			menufourn.add(sMenurecherchF);
			menufourn.add(sMenuListeF);
 
			//Menu Statistiques
			sMenuVCl=new MenuItem("Ventes par Clients");
			sMenuVP=new MenuItem("Ventes par produit");
			sMenuVCa=new MenuItem("Ventes par Catégorie");
			menustatis.add(sMenuVCl);
			menustatis.add(sMenuVP);
			menustatis.add(sMenuVCa);
			setSize(800,500);
			setLayout(new FlowLayout());
			add(getContentPane());
			//setVisible(true);
 
		}
	  	public JPanel getContentPane()
	  	{
	  		jContentPane= new JPanel();
	  		jContentPane.setLayout(new BorderLayout());
	  		jContentPane.add(getPanelButtons(),"West");
	  		jContentPane.add(getPanelPrincip(),"Center");
	  		return jContentPane;
	  	}
	 	public JPanel getPanelButtons()
	  	{
	 		PanelButtons =new JPanel();
	 		PanelButtons.setLayout(new BorderLayout());
	 		PanelButtons.setBorder(new LineBorder(Color.black, 10));
	 		PanelButtons.setLayout(new BorderLayout());
 
			bcherchCl = new JButton("Rechercher Client");
			bcherchCl.setPreferredSize(new Dimension(200,50));
 
			bAjD = new JButton("Ajouter Devis/Facture");
			bAjD.setPreferredSize(new Dimension(200,50));
 
			JButton bCherchD = new JButton("Rechercher Devis/Facture");
			bCherchD.setPreferredSize(new Dimension(200,50));
 
			JPanel p1 =new JPanel();
			p1.setLayout(new BorderLayout());
			JPanel ps1 =new JPanel();
			ps1.setLayout(new BorderLayout());
			p1.add(getbNewCl(),"North");
			ps1.add(bcherchCl,"North");
			p1.add(ps1,"Center");
 
			JPanel p2 =new JPanel();
			p2.setLayout(new BorderLayout());
			p2.add(bAjD,"North");
			p2.add(bCherchD,"Center");
			PanelButtons.add(p2,"North");
			PanelButtons.add(p1,"Center");
 
	  		return PanelButtons;
	  	}
	 	public JPanel getPanelfirst()
	 	{
	 		Panelfirst =new JPanel();
	 		 Panelfirst.setLayout(new FlowLayout());
	 		 Panelfirst .setBorder(new LineBorder(Color.black, 10));
				Label lb=new Label("Bienvenue Sur ROMCommerce");
				Label lbs=new Label("");
				lb.setFont(new Font("TimesRoman",Font.BOLD+Font.ITALIC,20));
				  Panelfirst .add(lbs);
				  Panelfirst .add(lb);
	 		return Panelfirst;
	 	}
	 	public JPanel getPanelPrincip()
	 	{
 
		    PanelPrincip =new JPanel();
		    PanelPrincip .setLayout(new CardLayout());
		    PanelPrincip.add(getPanelfirst(),"Panel1"); 
		    AjouterClient ac = new AjouterClient();
		    PanelPrincip.add(ac,"PanelAjCl");   
 
		    return PanelPrincip;
 
	 	}
	 	public JButton getbNewCl()
	 	{
	 		bNewCl = new JButton("Nouveau Client");
	 		bNewCl.setPreferredSize(new Dimension(200,50));
	 		bNewCl.addActionListener(new ActionListener(){
	 			public void actionPerformed(ActionEvent e)
	 			{
	 				((CardLayout)getPanelPrincip().getLayout()).show(getPanelPrincip(),"PanelAjCl");
	 			}
	 		});
	 		return bNewCl;
 
	 	}
}
le main pour le test est le suivant :
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
public class Test {
 
	public static void main(String[]args)
	{
		SwingUtilities.invokeLater(new Runnable()
		{
			public void run()
			{
				Accueil1 ac=new Accueil1();
				//ac.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				ac.setVisible(true);
 
			}
		});
           }
    }
quand la fenetre s'exucutera tout marche mais quand je clique sur le bouton correspondant , voila l'erreur qui m'est affiché:

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
 
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: wrong parent for CardLayout
	at java.awt.CardLayout.checkLayout(Unknown Source)
	at java.awt.CardLayout.show(Unknown Source)
	at Accueil1$1.actionPerformed(Accueil1.java:150)
	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.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)
Merci d'avance pour vos interventions