Bonjour,

dans le cadre d 'un exercice, je dois dessiner une interface graphique.
Le problème est que j arrive à afficher mes zone Layout avec le BorderLayout

J'arrive donc à avoir 5 zones (OUest, est, nord, sud, centre). J'arrive à créer bouton dans ma fenêtre

Outre ces essais là, j'arrie à créer un ovale dans ma fenêtre de jeu.

Cependant, je n'arrives pas à créer les deux en même temps. j'ai l'impression que l'un ecrése l'autre. C'est embetant.

L'objectif étant de créer un cercle au centre de la fenêtre de jeu. Et de créer un tableau dans la zone rouge de la capture d'écran.
J'ai beau chercher , je ne trouves pas.

Pourriez vous me conseiller sur la conception graphique.
Je vous poste une image de ce que j'arrives à avoir.

http://bcoudou.free.fr/ebay/Capture.png

Je vous montre mon code , je vous mets le code en rouge là où je travailles sur le graphique


D'avance je vous remercie pour votre aide
Programme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// j importe les biblio
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
 
 
public class Programme {
	public static void main (String [] args){
		//on cree la fenetre principale qui heberge le jeu		
		FenetrePrincipale fen = new FenetrePrincipale();
	}
 
}
Partie

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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
//sert à la lecture au clavier
import java.util.Scanner;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
 
//classe qui va créer la combinaison et les réponses. Elle hérite de la classe Partie
public class Partie extends Jeu{
	// on crée une combinaison à n cellules selon ce qu on a déclaré dans le constructeur
	protected int [] combinaison; 
	//on crée une variable qui va acceuillir la réponse
	protected int [] reponse;
	//je copies mes tableaux pour pouvoir travailler dessus.
	protected int [] copieCombinaison; 
	protected int [] copieReponse;    
	//on définit les constructeurs par défaut
	public Partie(int a ,int b, int c){ 
		// on appele le constructeur de la classe mère		
		super(a,b,c); 
		setPartie();
	}
	//on déclare la méthode qui va définir la combinaison
	public void setPartie(){
		//j initialise mes copies de tableaux
		copieCombinaison = new int[nbPions];
		copieReponse = new int[nbPions];
		//on définit une combinaison à x pions
		combinaison = new int[nbPions];
 
		//ANCIEN PROGRAMME		
		//on introduit
		//System.out.println("Joueur 1, vous allez définir votre combinaison:");
 
		// on affiche une msgbox qui previent
		JOptionPane.showMessageDialog(null,"Joueur 1, vous allez définir votre combinaison:");
		// on définit des variables
		String tmptxt;
		int tmp;
		// on donnes des valeurs à la combinaisons, il faut passer sur chaque positions du tab
		for (int i=0; i<nbPions; i++){
 
			//ANCIEN PROGRAMME
			/*//ceci sert pour la lecture au clavier.
			Scanner clavier = new Scanner (System.in);
			System.out.print("Choisissez un chiffre entre 1 et "+nbCouleurs+"? ");
			int tmp = clavier.nextInt();*/
 
			//on demande la saisie du chiffre
			tmptxt=JOptionPane.showInputDialog(null, "Choisissez un chiffre entre 1 et "+nbCouleurs+"? ");
			// on transforme en int
			tmp=Integer.parseInt(tmptxt);
			// on teste si c'est > 0 ou < aux nombres de couleurs
			while(tmp > nbCouleurs || tmp < 0) {
 
				//ANCIEN PROGRAMME 
				//System.out.print("ATTENTION!!!Choisissez un chiffre entre 1 et "+nbCouleurs+"? ");
				//tmp = clavier.nextInt();
 
				// on affiche une msgbox qui previent de l erreur
				tmptxt=JOptionPane.showInputDialog(null, "ATTENTION!!! 	Choisissez un chiffre entre 1 et "+nbCouleurs+"? ");
 
			}
			//si on sort de la boucle alors c'est bon
				combinaison[i]=tmp;
 
		}
 
	}
	//une méthode pour retourner la combinaison. On affiche chaque él du tableau
	public void getCombinaison(){
		System.out.print("la combinaison est: ");
		for (int i=0;i<nbPions;i++){
			System.out.print(combinaison[i]+" ");
		}
		System.out.println("");
	}
	//on surcharge toString
	public String toString(){ return "la combinaison a "+nbPions+" pions";}
 
	//on définit le nombre de pions bien placés
	public int bienPlaces(){
		//je définis une variable qui va définir le nombre de pions bien placés
		int bp=0;
		//on compare chaque el de la reponse aux el de la combi, et qu elle sont bien placé
		for (int i=0;i<nbPions;i++){
			if (reponse[i]==combinaison[i]){
				bp++;
				// on le met = 0 afin de na pas le compter dans la methode malPlace
				copieReponse[i]=copieCombinaison[i]=0;
			}
		}
		return bp;
	}
	//on définit le nombre de pions mal placés
	public  int malPlaces(){
		//je définis une variable qui va définir le nombre de pions mal placés
		int mp=0;
		//on compare chaque el à tous les él afin de voir si il se trouve dans la combi, et dans une autre boucle on fait el par el de la combi
		for (int j=0;j<nbPions;j++){
			for (int i=0;i<nbPions;i++){
				if (copieReponse[j]==copieCombinaison[i] && (copieReponse[j] != 0 || copieCombinaison[i] != 0)){
					///j incremente
					mp++;
					// je met les valeurs = 0
					copieReponse[j]=copieCombinaison[i]=0;
				}
			}
 
		}
 
		return mp;
	}
 
	//on lit la réponse dans une méthode
	public void setReponse(int a) {
		//cette boucle sert à effacer la combi définit par l'utilisateur 1		
		for (int x=0; x<100; x++){
			System.out.println("-------------------------");
		}
		// on définit le nombre d'el qui compose la réponse
		reponse =new int[nbPions];
		//on introduit
		System.out.println("Joueur 2,vous allez définir votre réponse:");
		// on comte le nombre d'esssai effectué
		int essai=a;
		// cran d'arrêt quand il aura trouvé la réponse
		boolean arret=false;
		//	ceci sert pour la lecture au clavier.
		Scanner clavier = new Scanner (System.in);
		// on donnes des valeurs à la reponse, il faut passer sur chaque positions du tab
		for (int i=0;i<nbPions;i++){
				System.out.print("Choisissez un chiffre entre 1 et "+nbCouleurs+"? ");
				int tmp = clavier.nextInt();
				// on teste si c'est > 0 ou < aux nombres de couleurs
				while(tmp > nbCouleurs || tmp < 0) {
					System.out.print("ATTENTION!!!Choisissez un chiffre entre 1 et "+nbCouleurs+"? ");
					tmp = clavier.nextInt();
 
				}
				//si on sort de la boucle de vérification des couleurs
					reponse[i]=tmp;
		}
				//je copies mon tableau de reponse afin de le modifier
				System.arraycopy(reponse,0,copieReponse,0,nbPions);
				System.arraycopy(combinaison,0,copieCombinaison,0,nbPions);
				// on test le nombre de pions bien placés
				if (bienPlaces()==nbPions){
					System.out.println("Vous avez trouvé la combinaison!!!! FELICITATIONS");
					//si true alors la combi a été trouvé et on arrete le jeu					
					arret=true;
					// on demande si il veut continuer à deviner?					
					System.out.print("Continuer?[0(arreter)/1(continuer)]");
					int go = clavier.nextInt();
					if ( go ==1) { 
						setPartie();
						setReponse(0);	
					}		
				}
				else{
					System.out.println("le nombre de pions bien placés est "+bienPlaces()+".");
					// on teste le nombre de pions mal placés
					System.out.println("le nombre de pions mal placés est "+malPlaces()+".");
					//on incremente les essais
					essai++;			
				}
				// on demande si il veut continuer à deviner?					
				System.out.print("Continuer?[0(arreter)/1(continuer)]");
				int go = clavier.nextInt();
				if ( go ==1) { 
					// on fait x tentatives comme définit au début.
					if( arret !=true && essai< nbTentatives ){
						//on rappele la fonction avec le nb de tentatives effectués
						setReponse(essai);
					}
					else{
						getCombinaison();
					}
				}
				else{
					getCombinaison();				
				}				
 
	}
	//	une méthode pour retourner la Reponse. On affiche chaque él du tableau
	public void getReponse(){
		System.out.print("la reponse est: ");
		for (int i=0;i<nbPions;i++){
			System.out.print(reponse[i]+" ");
		}
		System.out.println("");
	}
 
 
}
Jeux ici le code qui affiche les cadres et les boutons

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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
// j importe les biblio
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

//classe mère où les variables de bases sont définies. Elles seront rappelées par la suite
public class Jeu {
	//on déclare les variables suivantes qu'on aura besoin pour le jeu
	protected int nbPions;
	protected int nbCouleurs;
	protected int nbTentatives;
	
	//on déclare un constructeur par défaut en initialisant les variables.
	public Jeu(){ setJeu(4,5,5); }
	// on déclare un constructeur dans le cas où les variables sont proposées
	public Jeu( int a, int b, int c) { setJeu (a,b,c);}
	// on déclare la méthode qui va initialiser toutes ces variables pour ce jeu (surcharge)
	public void setJeu(int a, int b, int c){
		
		nbPions=a;
		nbCouleurs=b;
		nbTentatives=c;
		
	}
	//on définit une méthode qui va initialiser la variable nbPions
	public void setNbPions(int a){ nbPions=a;}
	//on définit une méthode qui va initialiser la variable nbCouleurs
	public void setNbCouleurs(int a){ nbCouleurs=a;}
	//on définit une méthode qui va initialiser la variable nbTentatives
	public void setNbTentatives(int a){ nbTentatives=a;}
	//on définit une méthode qui retourne les variables demandées
	public int getnbPions(){return nbPions;}
	public int getnbCouleurs(){return nbCouleurs;}
	public int getnbTentatives(){return nbTentatives;}
	// on surcharge le TOstring
	public String toString() { return "la classe est définie par nb de pions="+nbPions+" nb de couleurs="+nbCouleurs+" nb de tentatives="+nbTentatives;}
	
}

//classe s occupant de la construction de la fenetre principale
class FenetrePrincipale extends JFrame implements ActionListener{
	//je crée la barre de menu
	protected JMenuBar barreMenus;
	//je crée les  menus
	protected JMenu fichier, options, jeux, aide;
	// je crée les sous menus	
	protected JMenuItem nouveauJeu, ferme, definirTentatives, definirCouleurs, definirPions, definirCombinaison, about, nouveauJeuAvance;
	//Je cree monJeu
 	private Partie monJeu = null;
	// ********TEST***********
	private JPanel pan;
	//bouton repondre afin de proposer la solution
	private JButton repondre, tester;
	//constructeur par défaut
	public FenetrePrincipale(){ 
			
		
		// permettre la fermeture du programme sur la croix rouge 
		addWindowListener(new WindowAdapter()
				{ public void windowClosing (WindowEvent e)
					{ System.exit(0);
					}
				});
		setFenetre(); 
		
	}

	//paramétrage de la fenetre
	public void setFenetre(){
		///je definis le titre
		setTitle ("MasterMind");
		//je definis la taille de la fenetre
		setSize(800,600);
		//creations de la barre de menus
		barreMenus = new JMenuBar();
		setJMenuBar(barreMenus);
		//creations du  menu fichier et de ses sous menus
		fichier = new JMenu("Fichier");
		barreMenus.add(fichier);
		
		nouveauJeu = new JMenuItem("Nouveau Jeu");
		fichier.add(nouveauJeu);
		nouveauJeu.addActionListener(this);
		
		nouveauJeuAvance= new JMenuItem("Nouveau Jeu avancé");
		fichier.add(nouveauJeuAvance);
		nouveauJeuAvance.addActionListener(this);

		ferme = new JMenuItem("Quitter");
		fichier.add(ferme);
		ferme.addActionListener(this);

		//creations du menu  options et ses sous menus
		options = new JMenu("Options");
		barreMenus.add(options);
		
		definirTentatives = new JMenuItem("Définir un nombre de tentatives");
		options.add(definirTentatives);
		definirTentatives.addActionListener(this);

		definirCouleurs = new JMenuItem("Définir un nombre de couleurs");
		options.add(definirCouleurs);
		definirCouleurs.addActionListener(this);

		definirPions = new JMenuItem("Définir un nombre de pions");
		options.add(definirPions);
		definirPions.addActionListener(this);

		//creations menu Jeux et sous menus
		jeux = new JMenu("Jeux");
		barreMenus.add(jeux);
		
		definirCombinaison= new JMenuItem("Définir votre combinaison");
		jeux.add(definirCombinaison);
		definirCombinaison.addActionListener(this);

		//creation menu aide
		aide = new JMenu("?");
		barreMenus.add(aide);

		about= new JMenuItem("About");
		aide.add(about);
		about.addActionListener(this);
		this.setVisible(true);
		
		// on cree les panneaux de jeux
		//le panneau principal (toute la fenetre)
		Container c = getContentPane();
		c.setLayout(new BorderLayout());
		// on cree 5 panneaux
		JPanel centre=new JPanel();
		JPanel ouest= new JPanel();
		JPanel sud= new JPanel();
		JPanel nord = new JPanel();
		JPanel est = new JPanel();
		//on ajoute ces panneaux au panneau principal
		c.add(centre,BorderLayout.CENTER);
		c.add(nord,BorderLayout.NORTH);
		c.add(ouest,BorderLayout.WEST);
		c.add(est,BorderLayout.EAST);
		c.add(sud,BorderLayout.SOUTH);
		// on cree le bouton repondre
		repondre= new JButton("Proposer");
		tester = new JButton("Test");
		//on ajout une methode d alignement au panneau sud
		sud.setLayout(new FlowLayout(FlowLayout.RIGHT));
		// on ajoute le bouton au panneau sud
		sud.add(repondre);
		centre.setLayout(new BorderLayout());
		centre.add(tester,BorderLayout.EAST);
		centre.setBackground(Color.red);
		//pan= new Pion();
		//c.add(pan,BorderLayout.WEST);
		
	}
	//surcharge de ActionPerformed // ecouteur
	public void actionPerformed (ActionEvent e){
		Object source = e.getSource();
		//si on clique sur nouvelle partie, on lance une nouvelle partie. 
		if (source == nouveauJeu) { 
			//on informe
			JOptionPane.showMessageDialog(null, "Le nombre de pions est de 4, le nombre de couleurs est de 5, le nombre de tentatives est de 5");			
			//Partie j;
			monJeu=new Partie(4,5,5);
		
		}
		// on permet la fermeture du programme
		if (source == ferme){
			//this.setVisible(false);
			System.exit(0);
		}
		//si on clique sur nouvelle partie, on lance une nouvelle partie avance. 
		if (source == nouveauJeuAvance) { 
			// on definit le nombre de tentatives
			String txtTentatives = JOptionPane.showInputDialog(null, "Donnez le nombre de tentatives autorisées:");
			int tmpTentatives=Integer.parseInt(txtTentatives);
			// on definit le nombre de couleurs autoriszs
			String txtCouleurs = JOptionPane.showInputDialog(null, "Donnez le nombre de couleurs autorisées:");
			int tmpCouleurs=Integer.parseInt(txtCouleurs);
			// on definit le nombre de pions
			String txtPions = JOptionPane.showInputDialog(null, "Donnez le nombre de pions autorisées:");
			int tmpPions=Integer.parseInt(txtPions);
			// on cree la nouvelle partie
			monJeu=new Partie(tmpPions,tmpCouleurs,tmpTentatives);
			
		
		}
		// on permet la definition des nbTentatives	
		if (source == definirTentatives){
			String txt = JOptionPane.showInputDialog(null, "Donnez le nombre de tentatives autorisées:");
			int tmp=Integer.parseInt(txt);
			if (txt == null){
				monJeu.setNbTentatives(5);			
			}
			else{
				monJeu.setNbTentatives(tmp);
							
			}
		}
		// on permet la definition des nbCouleurs	
		if (source == definirCouleurs){
			String txt = JOptionPane.showInputDialog(null, "Donnez le nombre de couleurs autorisées:");
			int tmp=Integer.parseInt(txt);			
			if (txt == null){
				monJeu.setNbCouleurs(5);			
			}
			else{
				monJeu.setNbCouleurs(tmp);			
			}
		}
		// on permet la definition des nbPions	
		if (source == definirPions){
			String txt = JOptionPane.showInputDialog(null, "Donnez le nombre de pions autorisées:");
			int tmp=Integer.parseInt(txt);			
			if (txt == null){
				monJeu.setNbPions(4);			
			}
			else{
				monJeu.setNbPions(tmp);			
			}
		}
		// on permet la definition de la combinaison
		if (source == definirCombinaison){
				monJeu.setPartie();
		}
		// on permet la definition des nbTentatives	
		if (source == about){
			// on affiche une msgbox qui affiche un about
		JOptionPane.showMessageDialog(null,"Powered by Benjamin Coudou V1.0");
		}
	}
	//surcharge TOSTRING
	public String toString() { return "La classe est la classe qui construit la fenetre principale";}
}

class Pion extends JPanel {
	public void paintComponent(Graphics g) {
		super.paintComponent(g);            
		g.drawOval(130,60,110,50);
          }
         
}