mouse moved pour le survol d'une image
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:
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:
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:
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:
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(); |