Bonjour,
Je bloque sur ce problème depuis plusieurs jours et je n'ai pas trouvé de réponses sur internet
Je suis actuellement en train de développer un jeu à rendre pour mon université basé sur le design pattern MVC. Le programme se déroule deux phases :
- Phase de réglage des paramètres de la partie par l'utilisateur.
- Phase de jeu.
J'ai créé ces deux phases séparément et tout se déroule bien. Maintenant, je souhaite les implémenter dans un même programme. Il faut que l'on puisse quitter la phase 1 en cliquant sur un bouton "Démarrer" et que l'on arrive sur la phase 2 sans changer de fenêtre (JFrame).
Pour cela, je crée un JPanel pour la phase 1 et un JPanel pour la phase 2. Lorsque je clique sur "Démarrer", je remplace le JPanel 1 par le JPanel 2 de la JFrame.
Mon problème : Quand je clique sur "Démarrer", le bouton reste enfoncé, la fenêtre est complètement freezée (on ne peut plus la quitter...). Par la console, je vois que le jeu se déroule normalement mais le JPanel 1 reste là et le JPanel 2 ne s'affiche que lorsque la partie prend fin, après un certain lap de temps.
Voici le code implémenté dans ma classe contrôleur :
Voilà, j'espère que j'ai été assez précis. Si vous avez besoin de plus de code, demandez-moi (j'ai volontairement simplifié mon code ici pour faire au plus clair). Le projet est à rendre pour la fin de la semaine
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 if(arg0.getSource().equals(Pan1.getBoutonDemarer())){ PanneauPhase2 pan2 = new PanneauPhase2(); ControleurPhase2 controleur = new ControleurPhase2(pan2, modelePhase2); fen = pan1.getFenetre(); //Cette methode permet de recupérer la JFrame d'un JPanel //Ne fonctionne pas : fen.setContentPane(pan2); fen.validate(); (new Thread(pan2)).start(); //--- modelePhase2.demarerJeu(); //Fonctionne (vérifié par des tests en console) }
Merci d'avance !!







Répondre avec citation
Partager