Mon interface graphique ne s'actualise pas
ridou93
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
ridou93 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
ridou93 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dois faire un jeu sous Java. Celui-ci étant un jeu tour à tour, j'aimerais que mon interface graphique s'actualise à chaque tour, mais au lieu de cela, le programme attend de se terminer pour afficher la "dernière interface", par là j'entends que le nombre de tour est bien le dernier joué. Je ne vois donc rien avant que le jeu soit terminé.
J'ai bien déclaré et ouvert ma fenêtre, en théorie, avant de lancer le jeu à proprement parlé, et pourtant ma fenêtre ne s'ouvre que lorsque le jeu se termine...
Est ce que ce problème parle à quelqu'un?
Perso, je code sur NetBeans et avec le jdk 1.7
Merci d'avance
Je dois faire un jeu sous Java. Celui-ci étant un jeu tour à tour, j'aimerais que mon interface graphique s'actualise à chaque tour, mais au lieu de cela, le programme attend de se terminer pour afficher la "dernière interface", par là j'entends que le nombre de tour est bien le dernier joué. Je ne vois donc rien avant que le jeu soit terminé.
J'ai bien déclaré et ouvert ma fenêtre, en théorie, avant de lancer le jeu à proprement parlé, et pourtant ma fenêtre ne s'ouvre que lorsque le jeu se termine...
Est ce que ce problème parle à quelqu'un?
Perso, je code sur NetBeans et avec le jdk 1.7
Merci d'avance
A voir également:
- Mon interface graphique ne s'actualise pas
- Changer carte graphique - Guide
- Common interface samsung - Forum TV & Vidéo
- C'est quoi une CI card ? ✓ - Forum TV & Vidéo
- Ventilateur carte graphique ne tourne pas - Forum Carte graphique
- Ventilateur Carte Graphique tourne pas et processeur à 80° - Forum Carte graphique
2 réponses
Il faudrait voir un peu ton code pour t'aider précisément.
Ce qui peux se passer c'est que tu gères un évenement (avec des Listener), un affichage (avec paint ou repaint) ou n'importe quelle autre méthode "bloquante" (dont la fin est nécessaire pour que la fenêtre s'actualise) mais tu y fais des opérations longues (par exemple tout le jeu est dans une méthode comme ça), du coup la méthode ne se termine qu'à la fin du jeu et l'affichage peut enfin être actualisé.
Ce que tu dois faire (si c'est ça le problème), c'est t'arranger pour que les méthodes "bloquantes" se terminent bien aussi vite que possible, afin que l'affichage puisse être réalisé régulièrement.
Ce qui peux se passer c'est que tu gères un évenement (avec des Listener), un affichage (avec paint ou repaint) ou n'importe quelle autre méthode "bloquante" (dont la fin est nécessaire pour que la fenêtre s'actualise) mais tu y fais des opérations longues (par exemple tout le jeu est dans une méthode comme ça), du coup la méthode ne se termine qu'à la fin du jeu et l'affichage peut enfin être actualisé.
Ce que tu dois faire (si c'est ça le problème), c'est t'arranger pour que les méthodes "bloquantes" se terminent bien aussi vite que possible, afin que l'affichage puisse être réalisé régulièrement.
J'ai trouvé, je devrais mettre des update à la fin de chaque de tour par rapport aux composants qui sont modifiés.
Maintenant il se pose le problème que, le changement se fait, mais il ne respecte pas la forme que je lui est donné (police, taille, couleur..)
j'ai tenté qqch, mais ça ne donne rien de plus, voici le bout de code que j'ai tenté:
public class UpdateFenetre {
Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
int height = (int) dimension.getHeight();
int width = (int) dimension.getWidth();
int hauteurBande = 85;
int hauteurDegrade = 50;
int largeurCurseur = 15;
int bordureTitres = 40;
int bordure = 3;
public void update(Fenetre f){
//Pour actualiser le nombre de tour
f.getTour().setBounds(new Rectangle(30, 10, 100, 45));
Font police = new Font("Arial", Font.BOLD, 60);//choix de la police d'écriture
f.getTour().setFont(police);//appliquer la police
f.getTour().setForeground(Color.BLACK);
f.update(f.getTour().getGraphics());
//Pour actualiser l'indice du soleil
f.getTauxSoleil().setBounds(new Rectangle(2 * (width / 3) + 2 * bordure + 50, hauteurBande + 2 * bordureTitres + 25, 70, 20));
Font police4 = new Font("Arial", Font.BOLD, 20);//choix de la police d'écriture
f.getTauxSoleil().setFont(police4);
f.getTauxSoleil().setForeground(Color.WHITE);
f.update(f.getTauxSoleil().getGraphics());
}
}
j'ai essayé de mettre les uptades avant et après, mais ça ne change rien.. le programme ne respecte pas ma mise en forme :s
Maintenant il se pose le problème que, le changement se fait, mais il ne respecte pas la forme que je lui est donné (police, taille, couleur..)
j'ai tenté qqch, mais ça ne donne rien de plus, voici le bout de code que j'ai tenté:
public class UpdateFenetre {
Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
int height = (int) dimension.getHeight();
int width = (int) dimension.getWidth();
int hauteurBande = 85;
int hauteurDegrade = 50;
int largeurCurseur = 15;
int bordureTitres = 40;
int bordure = 3;
public void update(Fenetre f){
//Pour actualiser le nombre de tour
f.getTour().setBounds(new Rectangle(30, 10, 100, 45));
Font police = new Font("Arial", Font.BOLD, 60);//choix de la police d'écriture
f.getTour().setFont(police);//appliquer la police
f.getTour().setForeground(Color.BLACK);
f.update(f.getTour().getGraphics());
//Pour actualiser l'indice du soleil
f.getTauxSoleil().setBounds(new Rectangle(2 * (width / 3) + 2 * bordure + 50, hauteurBande + 2 * bordureTitres + 25, 70, 20));
Font police4 = new Font("Arial", Font.BOLD, 20);//choix de la police d'écriture
f.getTauxSoleil().setFont(police4);
f.getTauxSoleil().setForeground(Color.WHITE);
f.update(f.getTauxSoleil().getGraphics());
}
}
j'ai essayé de mettre les uptades avant et après, mais ça ne change rien.. le programme ne respecte pas ma mise en forme :s