Rafraichissement d'un panel
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:
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:
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:
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:
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