Pb de dessin dans un Jpanel au moment d'un clique....

Pb de dessin dans un Jpanel au moment d'un clique.... - Java - Programmation

Marsh Posté le 08-12-2005 à 17:07:08    

Bonjour,
 
L'objectif : Réaliser un puissance 4 qui graphiquement se compose d'un gridlayout decomposé en petit Jpanel.
 
On sait qu'on peut identifier le Jpanel par un indice (qui est affecté au moment de la création du gridlayout).
 
Dans un puissance 4, (différent du morpion), au moment du clique sur la zone, il faut que le rond se dessine en bas (vu que ça tombe).
 
 
J'ai réussi à modifier l'indice du Jpanel (où on clique), par contre lors de l'appel à la fonction repaint() (qui ne fait que de dessiner un rond par exemple).
 
Celui-ci se dessine  toujours la où le clique de la souris s'effectue sur l'écran malgrès le changement d'indice.
 
Comment faire pour dessiner à l'endroit du nouvel indice.
 
Le programme se compose de trois classes :
 
- Fenetre : elle crée la grille composée d'un nombre donnée de Jpanel
- ZoneGraphique (extends Jpanel) : C'est le petit carré dans la grille, et c'est la qu'on défini paintComponent() qui fait le dessin des ronds par ex.
- Partie : où il y a la gestion du jeu (comme par exemple rechercher le nouvelle indice), c'est ici qu'on change l'indice et qu'on appelle repaint.
 
Il faut savoir que l'interface graphique s'appuie sur un tableau à 2D pour la gestion du jeu.
 
 
En gros :
 
 
clique sur une case (une ZoneGraphique)  >>>  changement de l'indice courant grâce à une fonction dans Partie >>> Appel à repaint avec ce nouvel
                                                                                                                                                                                      indice
 
 
 
 
L'indice change bien (on a vérifié, ZoneGraphique.GetIndice() renvoi bien le nouvel indice) mais le dessin se fait toujours au même endroit (comme si la souris reprennait l'indice original)
 
 :cry:  :cry:  :cry:

Reply

Marsh Posté le 08-12-2005 à 17:07:08   

Reply

Marsh Posté le 09-12-2005 à 20:53:17    

Une idée, SVP

Reply

Marsh Posté le 13-12-2005 à 13:33:23    

SVP, ça me bloque complètement l'avancement

Reply

Marsh Posté le 13-12-2005 à 15:28:03    

Le fait de changer l'indice de ton JPanelne change pas sa place dans la grille.
 
En fait, tu prends le problème à l'envers. Ce que tu dois faire quand on clique sur une ZoneGraphique, au lieu de la déplacer tu dois déterminer l'indice de la zone où tu dois dessiner le jeton

Reply

Marsh Posté le 17-12-2005 à 18:18:17    

C'est exactement ce que je fais.
 
Je modifier l'indice et je lance la fonction paint.
 
Cette fonction est appélé autant de fois qu'il y a de Jpanel dans le GridLayout, mais le dessin se fait toujours la ou le clique de la souris a eu lieu malgrès le changement d'indice.
 
Ce qui me va pas, une autre idée peut etre.....???

Reply

Marsh Posté le 19-12-2005 à 10:20:58    

Tu ne dois pas changer l'indice du JPanel sur lequel tu cliques mais plutot déterminer quel JPanel redessiner, et lui dire de changer d'état. Ensuite tu lance paint().

Reply

Marsh Posté le 19-12-2005 à 11:01:37    

je ne sais pas quelle est la méthode pour récupérer l'"indice" du JPanel dans le GridLayout (j'ai rapidement cherché sans trouver), mais je suppose qu'elle te revoit qqch du genre (X,Y) non ?
moi je te conseille de te faire une table des correspondances que tu mets à jour à chaque coup, avec un découpage par colonne (Y) indiquant pour chaque colonne quel est le premier (X) vide, ie un truc du genre tab[Y] = X


Message édité par trevor le 19-12-2005 à 11:01:56

---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 20-12-2005 à 01:22:35    

Je vais regarder ça et je vous tiens au courant...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed