Bonsoir
j'essaye de crée une application pour ma formation un jeux
j'essaye de faire l'interface et j'ai un problème au niveau du rafraichissement du JPanel afin de mettre a jour les valeurs des cases a jouer (les cases sont des boutons).
a chaque clic les valeurs de toutes les cases peuvent changer .
donc au début du jeux :
l'utilisateur choisie le niveau de difficulté
ensuite le jeux commence
tous fonctionne jusqu'à la
une fois que le jeux commence des cases s'affiche et a chaque clic les valeurs change
j'ai initialisé les valeurs des cases a 4.
quand je clic sur n'importe quel boutons actif je veux que les valeurs passes a 0

et c'est la ou sa bloc
le tableau passe mais quand j'essaye de repeindre le panneau pour afficher les nouvelles valeurs. sa bloc
a mon Avis c'est la dernière classe qui cause problème
C'est au moment de repeindre les Cases

Mon code :
Classe 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
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
public class Fenetre extends JFrame implements ActionListener {
 
	static JLabel imageKalah = new JLabel( new ImageIcon( "kalah.gif"));
	static JPanel conteneurFenetre = new JPanel();
	private JButton lanch = new JButton(" Commencer ");
    private JComboBox combo = new JComboBox();
    private JLabel label = new JLabel("Difficulté");
    public int tabCase[][]=new int [2][6];
    static JPanel plateau = new JPanel();
 
	Fenetre(){
 
 
		// Frame & Panel definition  
 
		conteneurFenetre.setBackground(Color.WHITE); 
		conteneurFenetre.setLayout(new BorderLayout());
		this.setTitle(" Kalah le Jeux ");
		this.setSize(800, 300);
		this.setContentPane(conteneurFenetre);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
 
		// Panel North
 
		JPanel top = new JPanel();
		/*top.setBackground(Color.WHITE); */
        top.add(label);
        combo.addItem("facile");
        combo.addItem("Moyen");
        combo.addItem("Difficile");
        combo.addItem("Démoniaque");
        top.add(combo);
        conteneurFenetre.add(top,BorderLayout.NORTH);
 
        // Panel Center 
 
        conteneurFenetre.add(imageKalah,BorderLayout.CENTER);
 
        // Button South 
 
        JPanel south = new JPanel();
        south.add(lanch);
        conteneurFenetre.add(south,BorderLayout.SOUTH);
 
        // Listen 
        lanch.addActionListener(this);
	}
 
 
 
	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
			tabCase=Kalah.tab;
			conteneurFenetre.remove(imageKalah);
			int i=6;
			String tmp="ia";
			PanelCase panIa = new PanelCase(tmp);
		    tmp="hu";
			PanelCase panHm = new PanelCase(tmp);
 
 
			JPanel pScoreIA = new JPanel();
			JPanel pScoreHm = new JPanel();
			JButton scoreIa = new JButton ("IA Score "+i);
			scoreIa.setEnabled(false);
			JButton scoreHm = new JButton ("HM Score "+i);
			pScoreIA.add(scoreIa);
			pScoreHm.add(scoreHm);
 
 
 
 
			plateau.setLayout(new BorderLayout());
			plateau.add(panHm,BorderLayout.SOUTH);
			plateau.add(panIa,BorderLayout.NORTH);
			plateau.add(pScoreIA,BorderLayout.WEST);
			plateau.add(pScoreHm,BorderLayout.EAST);
 
			conteneurFenetre.add(plateau,BorderLayout.CENTER);
			//conteneurFenetre.repaint();
			this.setContentPane(conteneurFenetre);	
 
 
	}
}
Classe Case
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
public class Case extends JButton {
int numero,valeur,proprio;
 
public int getNumero() {
	return numero;
}
 
public void setNumero(int numero) {
	this.numero = numero;
}
 
 
Case(int num){
	numero=num;
 
}
}
Classe Panneau des joueurs
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
public class PanelCase extends JPanel {
	public static int[][] getTabCase() {
		return tabCase;
	}
 
	public static void setTabCase(int[][] tabCase) {
		PanelCase.tabCase = tabCase;
	}
 
	public static int tabCase[][]=Kalah.tab;
	private String pro = new String();
	static Case tab[]= new Case[12];
 //   static  int tour=0;
 
	PanelCase(String i) {
 
            pro = i;
		if (pro == "ia") {
			for (int it = 0; it < 6; it++) {
				Case loc = new Case(it);
				loc.setText(""+tabCase[0][it]);
				tab[it]=loc;
				loc.setEnabled(false);
				this.add(loc);
			}
 
		}
 
		else {
 
			for (int it = 0; it < 6; it++) {
				Case loc = new Case(it);
				loc.setText(""+tabCase[1][it]);
				tab[it+6]=loc;
				loc.addActionListener(new GameListener());
				this.add(loc);
			}
 
		}
	}
 
}
Classe qui écoute le jeux
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
public class GameListener implements ActionListener {
 
	@Override
	public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("j'ai cliqué sur = "+ ((Case) arg0.getSource()).getNumero());
int[][] test;
test=new int [2][6];
for(int i=0;i<2;i++){
	for (int j=0;j<6;j++)test[i][j]=0;
}
/******************************/
PanelCase.setTabCase(test);
Kalah.fr.conteneurFenetre.remove(Fenetre.plateau);
try {
    Thread.sleep(10);
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
 
for (Case s : PanelCase.tab)s.repaint();
Fenetre.conteneurFenetre.add(Fenetre.plateau,BorderLayout.CENTER);
}
c'est la Classe GameListener qui cause problème a mon avis