tiDevDu54  | D'accord je comprend, le problème c'est que je n'utilise aucun thread tout simplement parce que je n'arrive pas à en créer pour mon JLabel, je ne saurai pas ou le placer dans mon code.
 Voila le code entier de mon application avec à la ligne 350 le moment ou je veux rafraichir mon JLabel.
  
  Code :
 - import java.awt.Button;
 - import java.awt.Color;
 - import java.awt.Component;
 - import java.awt.Dimension;
 - import java.awt.event.ActionEvent;
 - import java.awt.event.ActionListener;
 - import java.awt.event.KeyEvent;
 - import java.awt.event.KeyListener;
 - import java.util.ArrayList;
 - import java.util.EventListener;
 - import java.util.HashMap;
 - import java.util.List;
 - import java.util.Map;
 - import javax.swing.BorderFactory;
 - import javax.swing.ImageIcon;
 - import javax.swing.JFrame;
 - import javax.swing.JLabel;
 - import javax.swing.JLayeredPane;
 - import javax.swing.JOptionPane;
 - import javax.swing.JPanel;
 - import javax.swing.JTextField;
 - import javax.swing.JToolBar;
 - import javax.swing.SwingUtilities;
 - import javax.swing.border.Border;
 - public class JLareyedPane extends JFrame implements KeyListener, ActionListener
 - {
 - 	//nom de l'utilisateur saisi à l'ouverture de l'application
 - 	private String nom;
 - 	//abscisse
 - 	private int x = 5;
 - 	//ordonnée
 - 	private int y = 5;
 - 	//nombre de cadeau qui sera implanté sur la grille
 - 	private int nbCadeau;
 - 	//abscisse et ordonnée des cases (JPanel) de la grille
 - 	private int abscisse = 0;
 - 	private int ordonnee = 0;
 - 	//variable contenant le score du joueur
 - 	private int score = 0;
 - 	//Création du panel conteneur
 - 	private JPanel pane = new JPanel();
 - 	//label contenant l'image
 - 	private JLabel grinch = new JLabel( new ImageIcon("image/test.jpg" ));
 - 	//tableau de hachage qui nous permettra d'y créer chaque case de la grille ou panel avec un nom diférent
 - 	private Map<String, JPanel> tabPanel = new HashMap<String, JPanel>();
 - 	//tableau de hachage regroupant plusieurs cadeaux
 - 	private Map<String, JLabel> tabCadeau = new HashMap<String, JLabel>();
 - 	//texbox du nombre de cadeau
 - 	private JTextField textFieldNbCadeau = new JTextField(20);
 - 	//Tableau regroupant les nombres tirés au hasard
 - 	private List<Integer> tableauTirage = new ArrayList<Integer>();
 - 	//tableau des coordonnées X de tous les cadeaux
 - 	private List<Integer> tableauX = new ArrayList<Integer>();
 - 	//tableau des coordonnées X de tous les cadeaux
 - 	private List<Integer> tableauY = new ArrayList<Integer>();
 - 	//label contenant le score du joueur
 - 	JLabel JLabelScore = new JLabel("Score : "+score);
 - 	//barre d'outil
 - 	JToolBar barreOutil = new JToolBar(); //instanciation d'une barre d'outil
 - 	//JLayeredPane permet de superposer des composants les uns sur les autres
 - 	JLayeredPane layeredPane = new JLayeredPane();
 - 	//constructeur
 - 	public JLareyedPane ()
 - 	{
 -   super();
 -   //On initialise notre fenêtre
 -   build();
 -   this.addKeyListener(this);
 - 	}
 - 	//méthode qui construit la fenêtre
 - 	private void build()
 - 	{
 -   //on récupère la valeur du nom entré au démarage du jeu
 -   nom = afficheBienvenu();
 -   //si l'utilisateur a saisi quelque chose
 -   if(!nom.equals("" ))
 -   {
 -   	setTitle("Jeu du Grinch" ); //On donne un titre à l'application
 -   	setSize(735,528); //on donne une taille à notre fenêtre
 -   	setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
 -   	setResizable(true); //On ne permet pas le redimensionnement
 -   	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
 -   	setContentPane(buildContentPane()); //on défini le contenu du conteneur principal
 -   	genererGrille(); //on génère la grille du jeux  
 -   	setLayout(null); //on annule tout positionnement
 -   }
 -   //si l'utilisateur n'a rien saisi, on n'affiche rien
 -   else System.exit(0);
 - 	}
 - 	public String afficheBienvenu()
 - 	{
 -   String nom = ""; //variable qui contiendra le nom saisi
 -   String saisi; //variable qui contiendra la saisie de l'utilisateur
 -   Boolean pasNom = true; //booléan initialisé a vrai tant qu'il n'a pas saisi de nom
 -   try
 -   {
 -   	while(pasNom)
 -   	{
 -     //on affiche une boite de dialogue pour que l'utilisateur rentre son nom
 -     saisi = JOptionPane.showInputDialog (null, "Saisissez votre prénom","Bienvenu au le jeu du grinch", JOptionPane.INFORMATION_MESSAGE) ;
 -     //si l'utilisateur a saisi quelque chose
 -     if(!saisi.equals("" ))
 -     {
 -     	pasNom = false;
 -     	nom = saisi;
 -     }
 -     if (saisi.equals(null)) {} // sinon on ne fait rien  
 -   	}
 -   }catch(NullPointerException npe)
 -   {
 -   }
 -   return nom;
 - 	}
 - 	public void genererGrille()
 - 	{
 -   //création d'une bordure de couleur blanche
 -   Border whiteline = BorderFactory.createLineBorder(Color.white,1);
 -   //création de ma grille
 -   //110 correspond au nombre de panel
 -   for(int i=0; i < 110; i++)
 -   {
 -   	//on fait appelle au tableau de hachage et on y insère chaque case (panel)
 -   	tabPanel.put("monPanel"+i, new JPanel());
 -   	tabPanel.get("monPanel"+i).setBounds(abscisse, ordonnee, 50, 50);
 -   	tabPanel.get("monPanel"+i).setBorder(whiteline);
 -   	tabPanel.get("monPanel"+i).setBackground(Color.black);
 -   	//on ajoute le JPanel au layeredPane
 -   	layeredPane.add(tabPanel.get("monPanel"+i));
 -   	//on change les coordonnées pour pouvoir placer les panels afin de former une grille
 -   	abscisse = abscisse + 50;
 -   	if(abscisse > 500)
 -   	{
 -     ordonnee = ordonnee + 50;
 -     abscisse = 0;
 -   	}
 -   }
 -   pane.add(layeredPane);
 - 	}
 - 	public void genererObstacle()
 - 	{
 -   //création d'un tableau de hachage pour mes obstacles
 -   Map<String, JLabel> tabObstacle = new HashMap<String, JLabel>();
 -   for(int i=0;i<10;i++)
 -   {
 -   	tabObstacle.put("obstacle"+i, new JLabel( new ImageIcon("image/obstacle.jpeg" )));
 -   }
 - 	}
 - 	public void genererCadeaux(int n)
 - 	{
 -   //création d'un tableau de hachage pour mes cadeaux
 -   for(int i=0;i<n;i++)
 -   {
 -   	tabCadeau.put("cadeau"+i, new JLabel( new ImageIcon("image/cadeau.gif" )));
 -   }
 -   //instanciation d'un tableau de liste
 -   List<Integer> tableauTirage = new ArrayList<Integer>();
 -   for (int i = 0; i < n; i++)
 -   {
 -   	boolean retirer = true;
 -   	do {
 -     int aleatoire = (int) (Math.random() * tabPanel.size());
 -     if (!tableauTirage.contains(Integer.valueOf(aleatoire)))
 -     {
 -     	tabPanel.get("monPanel"+aleatoire).add(tabCadeau.get("cadeau"+i));
 -     	//tabPanel.get("monPanel" + aleatoire).add(new JLabel(new ImageIcon("image/cadeau.gif" )));
 -     	tableauTirage.add(Integer.valueOf(aleatoire));
 -     	tableauX.add(tabPanel.get("monPanel"+aleatoire).getX());
 -     	tableauY.add(tabPanel.get("monPanel"+aleatoire).getY());
 -     	retirer = false;
 -     }
 -   	} while (retirer);
 -   }
 - 	}
 - 	public void effacerGrille()
 - 	{
 -   for(int i=0; i<tabPanel.size(); i++)
 -   {
 -   	tabPanel.get("monPanel"+i).removeAll();
 -   }
 - 	}
 - 	//construction du panel principal
 - 	private JPanel buildContentPane()
 - 	{
 -   //on change la couleur du panel principal
 -   pane.setBackground(Color.black);
 -   //largeur/hauteur
 -   layeredPane.setPreferredSize(new Dimension(550, 500));
 -   layeredPane.setBounds(176, 0, 550, 500);
 -   //on crée des bordure
 -   Border whiteline = BorderFactory.createLineBorder(Color.white,1);
 -   layeredPane.setBorder(whiteline);
 -   //on positionne le grinch sur la fenêtre
 -   grinch.setBounds(x, y, 25, 25);
 -   layeredPane.add(grinch);
 -   //barre d'outil
 -   JToolBar barreOutil = new JToolBar(); //instanciation d'une barre d'outil
 -   barreOutil.setLayout(null);
 -   barreOutil.setBounds(0, 0, 175, 520); //on positionne et redimensionne
 -   //label du nom du joueur
 -   JLabel nomJoueur = new JLabel("Bienvenue "+nom);
 -   nomJoueur.setBounds(20, 5, 400, 20);
 -   barreOutil.add(nomJoueur);
 -   //label "Difficulté du jeu"
 -   JLabel difficulte = new JLabel("Difficulté du jeu" );
 -   difficulte.setBounds(40, 40, 100, 20);
 -   barreOutil.add(difficulte);
 -   //label "nombre de cadeaux"
 -   JLabel JLabelnbCadeau = new JLabel("Nombre de cadeaux" );
 -   JLabelnbCadeau.setBounds(20, 90, 150, 20);
 -   barreOutil.add(JLabelnbCadeau);
 -   //texbox du nombre de cadeau
 -   textFieldNbCadeau.setBounds(20, 110, 30, 20);
 -   barreOutil.add(textFieldNbCadeau);
 -   //label "nombre de Whos"
 -   JLabel JLabelnbWho= new JLabel("Nombre de Whos" );
 -   JLabelnbWho.setBounds(20, 130, 150, 20);
 -   barreOutil.add(JLabelnbWho);
 -   //texbox du nombre de Whos
 -   JTextField textFieldNbWho = new JTextField(20);
 -   textFieldNbWho.setBounds(20, 150, 30, 20);
 -   barreOutil.add(textFieldNbWho);
 -   //label "vitesse des whos"
 -   JLabel JLabelnbVitWho= new JLabel("Vitesse des Whos" );
 -   JLabelnbVitWho.setBounds(20, 170, 160, 20);
 -   barreOutil.add(JLabelnbVitWho);
 -   //texbox de la vitesse des Whos
 -   JTextField textFieldVitWho = new JTextField(20);
 -   textFieldVitWho.setBounds(20, 190, 30, 20);
 -   barreOutil.add(textFieldVitWho);
 -   //bouton "valider"
 -   Button btnValider = new Button("Valider" );
 -   btnValider.setBounds(55, 225, 50, 20);
 -   barreOutil.add(btnValider);
 -   btnValider.addActionListener(this);
 -   //label du score
 -   JLabel JLabelScore = new JLabel("Score : "+score);
 -   JLabelScore.setBounds(20, 400, 160, 20);
 -   barreOutil.add(JLabelScore);
 -   pane.add(barreOutil);
 -   return pane;
 - 	}
 - 	public void keyPressed(KeyEvent k)
 - 	{
 -   int Caract = k.getKeyCode();
 -   //on fait bouger l'image vers le haut
 -   if(Caract==KeyEvent.VK_UP)
 -    {
 -   	if(y>5)
 -     y = y - 5;
 -   	grinch.setLocation(x, y);
 -    }
 -   //on fait bouger l'image vers le bas
 -    if(Caract==KeyEvent.VK_DOWN)
 -    {
 -     if(y<470)
 -      y = y + 5;
 -     grinch.setLocation(x, y);
 -    }
 -    //on fait bouger l'image vers la droite
 -    if(Caract==KeyEvent.VK_RIGHT)
 -    {
 -     if(x<525)
 -      x = x + 5;
 -     grinch.setLocation(x, y);
 -    }
 -    //on fait bouger l'image vers la gauche
 -    if(Caract==KeyEvent.VK_LEFT)
 -    {
 -     if(x>5)
 -      x = x - 5;
 -     grinch.setLocation(x, y);
 -    }
 -   //if qui compare les coordonnées du grinch et des cado
 -   for(int i=0; i<tableauX.size(); i++)
 -    {
 -   	int lTabX = tableauX.get(i)+25;
 -   	int lTabY = tableauY.get(i)+25;
 -   	if(((grinch.getX()>=tableauX.get(i))&&(grinch.getX()<=lTabX))
 -     	&&((grinch.getY()>=tableauY.get(i))&&(grinch.getY()<=lTabY)))
 -   	{
 -     JOptionPane.showMessageDialog(this,"Touché" );
 -     score = score + 5;
 -     //label du score
 -     JLabelScore.setText("Score : "+score);
 -     JLabelScore.repaint();
 -   	}
 -    }
 - 	}
 - 	public void keyReleased(KeyEvent arg0) {}
 - 	public void keyTyped(KeyEvent arg0) {}
 - 	public void actionPerformed(ActionEvent ev)
 - 	{
 -   //si l'utilisateur clique sur le bouton "valider"
 -   if (ev.getActionCommand().equals("Valider" ))
 -   {
 -   	//si le nombre de cadeau est inférieur a 20
 -   	if((textFieldNbCadeau.getText().equals("" ))||(textFieldNbCadeau.getText().equals(0)||
 -     	(Integer.parseInt(textFieldNbCadeau.getText())>=20)))
 -   	{
 -     JOptionPane.showMessageDialog(null, "Erreur dans le nombre de cadeau" );
 -     textFieldNbCadeau.setText("" );
 -   	}
 -   	else
 -   	{
 -     //on efface tout élément présent sur la grille
 -     effacerGrille();
 -     //on récupère le nombre de cadeau saisi
 -     nbCadeau = Integer.parseInt(textFieldNbCadeau.getText());
 -     //on génère les cadeaux sur la grille
 -     genererCadeaux(nbCadeau);
 -     //on repositionne le grinch en haut a gauche
 -     grinch.setBounds(5, 5, 25, 25);
 -     //on rafraichi la grille
 -     pane.validate();
 -     //on donne le focus à la grille et donc au grinch
 -     requestFocus();
 -   	}
 -   }
 - 	}
 - }
 
  |  
    Message édité par tiDevDu54 le 24-11-2009 à 13:28:21
  |