bonjour,

j'ai deux questions :

1) comment retourner plusieurs variables via une méthode ?
2) j'ai une classe "CallBack_Boutons" (un callback en fait) et je veux modifier une variable (boolean fin) de la classe "Fenetre" via la méthode "actionPerformed". Je veux que lors du clic sur le bouton, la variable fin de "Fenetre" passe à true.

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
import java.awt.event.*;
import javax.swing.*;
 
 
class CallBack_Boutons implements ActionListener
{
	private int i, j;
	private int nb_voisins;
	private boolean visible;
	private boolean mine;
	private JButton bouton;
 
	public CallBack_Boutons(JButton bouton, int nb_voisins, int i, int j, boolean mine, boolean visible)
	{
		super();
		this.i=i;
		this.j=j;
		this.mine=mine;
		this.bouton=bouton;
		this.visible=visible;
	}
 
 
	public void actionPerformed(ActionEvent e)
	{       	
		if (this.visible==false)
			this.visible=true;
 
		if (this.mine==true)
			JOptionPane.showMessageDialog(null,"La partie est fini perdu :'(","Fin de partie",JOptionPane.ERROR_MESSAGE);
 
		if (bouton!=null)
			bouton.setText("marche");
 
 
	}
 
}
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
import java.awt.*;
import javax.swing.*;
 
 
public class Fenetre extends JFrame
{
	private boolean fini=false;
 
	/* taile de la zone de jeu */
	private int largeur=10;
	private int hauteur=10;
 
	/* boutons de la zone de jeu */
	private JButton zone_de_jeu[][]=new JButton[largeur][hauteur];
 
	/* infos grille de jeu */
	Grille grille=new Grille(largeur,hauteur);
 
	/* création des boutons */
	private void initBoutons(JButton boutons[][], JPanel fenetre, GridLayout gl)
	{
		for(int i=0;i<largeur;i++)
		{
			for(int j=0;j<hauteur;j++)
			{
				boutons[i][j]=new JButton("-");					/* création du bouton */
				CallBack_Boutons cb=new CallBack_Boutons(boutons[i][j],this.grille.get_nb_voisins(i,j),i,j,this.grille.get_mines(i,j),this.grille.get_visibilite(i,j));
				fenetre.add(boutons[i][j],gl);					/* ajout du bouton au GridLayout */
				boutons[i][j].addActionListener(cb);				/* liaison du bouton et du callback */
			}
		}
	}
 
	/* création de la fenêtre */
	public Fenetre(String titre)
	{	
		super();
 
		/* création des zones de la fenêtre */
		JPanel fenetre=new JPanel(), haut=new JPanel(), haut_milieu=new JPanel(), milieu=new JPanel(), bas=new JPanel();
		GridLayout gl;
		FlowLayout fl;
		BorderLayout bl, bdl;
		JButton bouton;
		Menu menu;
 
		/* réglage des paramètres de la fenêtre */
		this.setTitle(titre);
 
		this.setSize(160,240);
 
		this.setLocationRelativeTo(null); 				// On centre la fenêtre sur l'écran
 
		this.setResizable(true);					//On permet le redimensionnement
 
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		//On dit à l'application de se fermer lors du clic sur la croix
 
		/* ajout des zones secondaires de la fenêtre dans la zone principale (fenetre) */
		//bl.???setmmespace(false);
		//bl=new BoxLayout(fenetre,BoxLayout.Y_AXIS);
		bl=new BorderLayout();
		fenetre.setLayout(bl);
		fenetre.add(bl.NORTH,haut);
		fenetre.add(bl.CENTER,milieu);
		fenetre.add(bl.SOUTH,bas);
		setContentPane(fenetre);
 
		bdl=new BorderLayout();
		haut.setLayout(bdl);
		menu=new Menu(haut,bdl);
 
		/* bouton qui change d'état quand on clique dessus */
		fl=new FlowLayout(FlowLayout.CENTER);
		haut_milieu.setLayout(fl);
		bouton=new JButton(":-)");
		haut.add(bouton);
		bouton.addActionListener(new BoutonsSmiley(bouton));
 
		/* création de la zone de jeu */
		gl=new GridLayout(largeur, hauteur);
		milieu.setLayout(gl);
 
		// création des boutons de la zone de jeu	
		initBoutons(zone_de_jeu,milieu,gl);
	}
}
PS : j'ai un problème de disposition dans ma fenêtre, je veux centrer un bouton dans un JPanel avec un Layout BorderLayout qui lui-même est dans un JPanel de layout BorderLayout aussi. Cependant le bouton prend toute la largeur hors je ne veux pas ça.