Bonjour à tous,
J'ai un composant C implémenté par MouseMotionListener inclus dans un JPanel implémenté par MouseListener. Je voudrais faire réagir le composant C quand la souris le survole. Pour cela, dans la classe de C, j'utilise la méthode mouseMoved. Le problème est que cette méthode se lance quand la souris est en mouvement même à l'extérieur du composant C (on reste à l'intérieur du JPanel). J'imagine que la zone écouté est celle du JPanel alors qu'il faudrait que ça soit celle du composant C.
Comment puis-je faire pour faire réagir le composant C quand la souris le survole ?
Voici mon code :
Classe Antenne (que j'ai nommé composant C ci-dessus) :
Classe du JPanel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class Antenne extends JPanel implements MouseMotionListener{ private int x,y,l,h; Graphics g; Antenne(){x=10; y=10;l=10;h=10;} Antenne(int a, int b, int c, int d){ x=a;y=b;l=c;h=d; } int getX1(){return x;} int getY1(){return y;} int getL(){return l;} int getH(){return h;} void drawG(JPanel p){ g=p.getGraphics(); int i; for(i=0;i<200;i=i+50) g.drawOval(x-i,y-i/3,l+2*i,h+2*i/3); } public void mouseDragged(MouseEvent e) {} public void mouseMoved(MouseEvent e) { int i=150; g.fillOval(x-i,y-i/3,l+2*i,h+2*i/3); } }
Un grand merci à tous pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public class Carte extends JPanel implements MouseListener { private Graphics g; JPanel pa; public Carte(JPanel p) { this.pa=p; pa.setBackground(Color.WHITE); } public void mouseClicked(MouseEvent e) { Antenne A = new Antenne(e.getX()-50,e.getY()-10,100,20); A.drawG(pa); pa.addMouseMotionListener(A); } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {}
:-)
Partager