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
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
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 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 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 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
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); } } } }
c'est la Classe GameListener qui cause problème a mon avis
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); }
Partager