Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2058 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [résolu] Petit problème de Thread

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] Petit problème de Thread

n°1688536
mic-chan
Posté le 19-02-2008 à 15:29:49  profilanswer
 

Bonjour,
je programme avec des amis un petit jeu en temps réel
pour exposer notre problème voici un résumé simpliste des classes concernées
 
attributs de la classe Menu (extends JPanel) : JButton boutonSoldat, boutonVehicule;
 
méthodes de la classe Formateur :

Citation :

public void entrainerSoldat() {
   menu.boutonSoldat.setText("En formation" );
   try{
     Thread.sleep(500);
   }catch (Exception e){}
   menu.boutonSoldat.setText("Créer Soldat ?" );
}
public void entrainerVehicule(){
   menu.boutonSoldat.setText("En Construction" );
  try{
     Thread.sleep(1000);
   }catch (Exception e){}
   menu.boutonSoldat.setText("Créer véhicule ?" );
}


 
dans le constructeur de la classe Controle (qui a comme attribut un Menu):

Citation :

boutonSoldat.addMouseListener(new MouseAdapter(){
public void MouseReleased(MouseEvent e) {
    formateur.entrainerSoldat();
    joueur.ajouter(new Soldat());
});
boutonChar.addMouseListener(new MouseAdapter(){
public void MouseReleased(MouseEvent e) {
    formateur.entrainerVehicule();
    joueur.ajouter(new Vehicule());
});


 
classe Joueur : liste des soldats et des véhicules
 
vous l'aurez compris, le clic sur l'un des boutons permet de construire un soldat ou un véhicule après un certain temps d'attente. Ceci a pour but d'attendre la fin de la formation d'un soldat avant de l'ajouter au jeu, comme dans tout jeu de stratégie. Cela fonctionne. Problème : pendant cette attente on ne peut pas cliquer sur les autres boutons ! Le bouton Soldat reste enfoncé (car l'attente commence dans la méthode MouseReleased()), le controle est en quelque sorte bloqué par cette attente et n'est plus à l'écoute des autres clics. Il faudrait que le programme se découpe en 2 parties, l'une qui s'occupe des actions à faire après l'attente et l'autre qui reste attentive aux clics de souris. Quelle solution peut on adopter ?
De plus, les setText() sur les boutons n'ont pas d'effet, plus exactement on ne peut pas faire de repaint() sur le menu pendant l'attente.


Message édité par mic-chan le 22-02-2008 à 17:46:14
mood
Publicité
Posté le 19-02-2008 à 15:29:49  profilanswer
 

n°1688686
mic-chan
Posté le 19-02-2008 à 16:43:49  profilanswer
 

et merci a ceux qui voudront bien nous aider  :hello:  

n°1688761
fred777888​999
Posté le 19-02-2008 à 17:33:22  profilanswer
 

Rien d'etonnant, tu met ton thread en sommeil le temps de creer un soldat ou un vehicule. Ce qu'il faut faire est plutot positionner une methode qui se declanchera sur un timer au bout du temps necessaire. Par ex : Timer en java, ex a adapter

n°1688841
mic-chan
Posté le 19-02-2008 à 19:50:11  profilanswer
 

solution très simple et très efficace, thanks  ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [résolu] Petit problème de Thread

 

Sujets relatifs
Petite question sur l'organisation d'un site[Résolu ]Opérateur de comparaison en python
[Résolu]Sélectionner mes zones de texte avec VBA pour excelCookie ne se crée pas [RESOLU grâce à NazzTazz. MERCI !]
Problème de MCD pour produits à mulitples optionsProblème code erreur PHP
problème avec drawrectprobleme de frame en HTML.
Probleme création nouveau membreProblème de passage de variables
Plus de sujets relatifs à : [résolu] Petit problème de Thread


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR