Souris JLabel mouseClicked

thithib112 Messages postés 2 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 24 avril 2009 - 23 avril 2009 à 17:05
thithib112 Messages postés 2 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 24 avril 2009 - 24 avril 2009 à 17:28
Bonjour,

Je suis en ce moment sur un projet de puzzle, mais il me reste un obstacle pour le finir: l'interaction avec l'utilisateur.
Je m'explique: je voudrais que le joueur puisse déplacer les images (qui sont contenues dans 9 JLabel dans un tableau de type 3x3 genre grille[i][j]) en cliquant sur celle qu'il veut bouger, puis une autre fois sur l'image qu'il veut remplacer.
Pour ca j'utilise:

 public void move(JLabel a , JLabel b)
 {
     Icon img = a.getIcon(); //récupère l'image contenue sur le jLabel a, on l'enregistre
     a.setIcon(b.getIcon()); //ensuite on peut remplacer l'image de a, par l'image de b
     b.setIcon(img); //remplace l'image de b par l'image de a (qu'on avait sauvergardée)
 }

Mais je ne sais pas me servir d'un mouseClicked, ou du moins je n'ai pas trouvé comment faire ce que je veux faire.
Je pars de ça:

public void mouseClicked(MouseEvent e)
 {
     Object label = e.getSource(); //recupere les infos sur le jLabel (adresse mémoire)

     int x = e.getX();
     int y = e.getY();
}

Si quelqu'un a une idée elle est la bienvenue

2 réponses

Armiana Messages postés 3 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 1 juillet 2009
24 avril 2009 à 14:55
Bonjour,

Ca fait un bout de temps que j'ai pas fait d'évennementiel en Java (ni du java tout court d'ailleurs), mais si je me rappelle bien, il faut que tu ajoute des écouteurs sur tes JLabels, et que ta fonction move apparaisse dans le mouseCliked...

J'espere pouvoir t'aider, je ferais des recherches plus approfondies si tu ne t'en sors pas.
0
thithib112 Messages postés 2 Date d'inscription jeudi 23 avril 2009 Statut Membre Dernière intervention 24 avril 2009
24 avril 2009 à 17:28
Armiana, j'ai déjà ajouté des écouteurs :

grille[i][j].addMouseListener(this);   //active les controles sur le Jlabel que on a crée
                                          
avec les JLabel enregistré dans grille[i][j],

et puis oui je pensais mettre aussi la fonction move dans mouseClicked, le truc c'est que je ne sais
pas convertir la position getX et getY en l'image cliquée: par exemple grille[1][0] ou grille[i+1][j]
0
Rejoignez-nous