Pb de dessin dans un Jpanel au moment d'un clique.... - Java - Programmation
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
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.....???
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().
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
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)