Bonjour,

ce que je veux faire est simpe : un changement d'image lors d'un survol

On survol une image (object Item), et lorsqu'on la survol, elle est modifiée en une autre image.

Je veux donc faire :
dans la classe principale : écouter les objects Item que je souhaite survoller
dans la classe Item : si la souris bouge dessus, faire le changement d'image de l'object

donc :
j'écoute les objects Item DONT J'AI BESOIN SEULEMENT dans le consctructeur de la classe principale.
Dans la classe Item, dans mousemoved, je vérifie que le curseur est bien au dessus l'image, et si c'est le cas, il est censé afficher son nom...

=> mais il le fait pas,

Ecoute des objects Item :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
for(int i = 0; i < vItem.size(); i++)
{
  Pattern pattern_Item = Pattern.compile("^./images/Item/");
  Matcher matcher_Item=pattern_Item.matcher(vItem.elementAt(i).getPath());
 
  if(matcher_Item.find()==true)
  {
     this.addMouseListener(vItem.elementAt(i));
      this.addMouseMotionListener(vItem.elementAt(1));			
  }
}

COde du mouse moved de la classe Item

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
System.out.println(this.getName()+" X min "+this.getX()+" < @x "+event.getX()+" < "+(this.getX()+this.getLargeur()));
System.out.println(this.getName()+" Y min "+this.getY()+" < @y "+event.getY()+" < "+(this.getY()+this.getHauteur()));
 
if(event.getX()<=(this.getX()+this.getLargeur()) & event.getX()>=this.getX() & event.getY()<=this.getY() & event.getY()>=(this.getY()+this.getHauteur()))
{
  System.out.println(this.getName());
}
J'ai l'impression que c'est la condition qui n'est pas vérifiée...
pourtant, j'ai déjà fait la même chose ailleurs dans le programme, et ça fonctionne très bien :

Dans la classe principale on écoute des objects Text
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
for(int k = 0; k < vText.size(); k++)
{
  this.addMouseListener(vText.elementAt(k));
  this.addMouseMotionListener(vText.elementAt(k)); 
}
et dans la classe Text, lors d'un mouse moved, on change la couleur du texte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
if(event.getX()<=this.getX()+this.getTextWidth() & event.getX()>=this.getX() & event.getY()<=this.getY() & event.getY()>=this.getY()-this.getTextHeight())
{	
	r=255;
	v=0;
	b=255;
}
else
{
	r=0;
	v=0;
	b=0;
}
repaint();