Java , raffraichissement

Fermé
flo076 - 31 janv. 2011 à 19:32
xamurai Messages postés 223 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 19 février 2013 - 1 févr. 2011 à 04:39
Bonjour,

Voila je dois codé un petit jeux assez simple , un panel a gauche contenant des boutons de couleur , un panel au milieu avec une photo ( par exemple une voiture rouge).
Lorsque je clique sur la couleur si j'ai cliqué sur la voiture rouge je tire au hasard une autre photo sinon je redemande. Mon problème est que lorsque je choisi la bonne couleur , le tirage de la nouvelle photo se fait mais l'affichage ne change pas et je ne comprends. Je comprends pas d'où vient le problème je pense que ce n'est pas grand chose. Voila mon code merci de votre aide


import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class TableCoulV2 extends JFrame implements ActionListener {

/**
* @param args
*/
private Color [] tabCoul = {Color.BLUE, Color.RED};
private String [] tabAdrrImage={"schtroumpf.gif","voit_rouge.jpg"} ;

private JButton bCouleur;
private JPanel pGene,pBoutton,pChoix,pObject,pLabel;
private JLabel image;
private Label choix;

private int numImage,numSon;


public TableCoulV2()
{
setTitle("Jeu 1");
setSize(350,200);
setLocation(50,50);

/*Panel appelé par le Menu*/
pGene = new JPanel(new GridLayout(1,3));

/*Panel qui contiens les Boutons*/
pBoutton = new JPanel(new GridLayout(1,2));

for(int i=0 ; i<tabCoul.length ; i++)
{
bCouleur = new JButton(""+i);
bCouleur.setBackground(tabCoul[i]);
bCouleur.setForeground(tabCoul[i]);
bCouleur.addActionListener(this);
pBoutton.add(bCouleur);
}

/*Panel avec l'image*/

pObject = new JPanel();
this.choixImage();


/*Panel de la couleur choisi*/
pChoix = new JPanel();
choix = new Label();
pChoix.add(choix);




/*Ajout de tous les panel à Pgene*/
pGene.add(pBoutton);
pGene.add(pObject);
pGene.add(pChoix);

/*AJOUT DE pGene à la frame à supprimer kan y'aura le menu*/

add(pGene);


pack();
setVisible(true);
}

private void choixImage()
{
System.out.println("Passe dans choixImage");
image = new JLabel( new ImageIcon(tabAdrrImage[this.hasard()]));
pObject.add(image);
}


private int hasard()
{
int hasard = (int) (Math.random() * tabCoul.length);
numImage = hasard;
System.out.println("valeur tiree : \t "+hasard);
return hasard;
}

public boolean bonChoix(String s)
{
/*System.out.println("couler cliké : \t " + s);
System.out.println("couler Image : \t " + numImage );*/
if ( Integer.parseInt(s) == numImage)
return true;
return false;
}

public class JouerSon implements Runnable
{
public void run()
{
Sound player;
if(numSon==0)
{
player = new Sound("applaudissement.wav");
}
else
{
player = new Sound("applaudissement.wav");
}
InputStream stream = new ByteArrayInputStream(player.getSamples());
player.play(stream);

}
}
public void actionPerformed(ActionEvent e)
{
String coulChoix = ((JButton)e.getSource()).getText();
if ( this.bonChoix(coulChoix))
{
/*Jouer son applaudissement*/
numSon=0;
this.choixImage();

}else
{
/*Jouer son recommence*/
numSon=1;
}

JouerSon j = new JouerSon();
Thread t = new Thread(j);
t.start();

}


public static void main(String[] args) {
// TODO Auto-generated method stub
new TableCoulV2();
}

}

A voir également:

1 réponse

xamurai Messages postés 223 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 19 février 2013 15
1 févr. 2011 à 04:39
Je n'ai pas le temps de lire ton code mais a mon avis tu dois revalider tes panels qui ont changé:

panel1..revalidate();
0