Mon interface graphique ne s'actualise pas

Fermé
ridou93 Messages postés 8 Date d'inscription mardi 7 mai 2013 Statut Membre Dernière intervention 11 mai 2013 - 7 mai 2013 à 15:51
ridou93 Messages postés 8 Date d'inscription mardi 7 mai 2013 Statut Membre Dernière intervention 11 mai 2013 - 8 mai 2013 à 16:28
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

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
7 mai 2013 à 19:33
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.
0
ridou93 Messages postés 8 Date d'inscription mardi 7 mai 2013 Statut Membre Dernière intervention 11 mai 2013
8 mai 2013 à 16:28
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
0