Bonjour,

J'ai un soucis avec une application que je suis en train de développer. L’événement mouseEntered(mouseEvent e) ne me donne aucun résultat. Je m'explique: j'aimerais, au passage de la souris sur une icône en barre des tâches, qu'un popupMenu() s'ouvre. J'arrive pour l'instant à le faire en faisant clique droit mais cette fonctionnalité m'est offerte grâce au constructeur de la classe trayIcon. Avec le code cela risque d'être un peu plus clair:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
 * 
 * 
 *
 */
 
package systemtray;
 
import java.awt.*;
import java.awt.event.*;
import java.util.logging.Level;
import java.util.logging.Logger;
 
public class SystemTrayTest
{
 
    public SystemTrayTest()
    {
 
        final TrayIcon trayIcon;
 
        if (SystemTray.isSupported()) {
            try {
                SystemTray tray = SystemTray.getSystemTray();
                Image image = Toolkit.getDefaultToolkit().getImage("tray.gif");
 
                MouseListener mouseListener = new MouseListener() {
 
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        System.out.println("Tray Icon - Mouse clicked!");                 
                    }
                    @Override
                    public void mouseEntered(MouseEvent e) {
                        System.out.println("Tray Icon - Mouse entered!");                 
                    }
                    @Override
                    public void mouseExited(MouseEvent e) {
                        System.out.println("Tray Icon - Mouse exited!");                 
                    }
                    @Override
                    public void mousePressed(MouseEvent e) {
                        System.out.println("Tray Icon - Mouse pressed!");                 
                    }
                    @Override
                    public void mouseReleased(MouseEvent e) {
                        System.out.println("Tray Icon - Mouse released!");                 
                    }
 
                };
 
                ActionListener exitListener = new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        System.out.println("Exiting...");
                        System.exit(0);
                    }
                };
 
                PopupMenu popup = new PopupMenu();
                MenuItem defaultItem = new MenuItem("Exit");
                MenuItem skype = new MenuItem("Skype");
                defaultItem.addActionListener(exitListener);
                popup.add(defaultItem);
                popup.add(skype);
 
                trayIcon = new TrayIcon(image, "Tray Demo", popup);
 
                ActionListener actionListener = new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        trayIcon.displayMessage("Action Event", 
                            "An Action Event Has Been Peformed!",
                            TrayIcon.MessageType.INFO);
                    }
                };
 
                trayIcon.setImageAutoSize(true);
                trayIcon.addActionListener(actionListener);
                trayIcon.addMouseListener(mouseListener);
 
                //    Depending on which Mustang build you have, you may need to uncomment
                //    out the following code to check for an AWTException when you add 
                //    an image to the system tray.
 
                //    try {
                          tray.add(trayIcon);
                //    } catch (AWTException e) {
                //        System.err.println("TrayIcon could not be added.");
                //    }
            } catch (AWTException ex) {
                Logger.getLogger(SystemTrayTest.class.getName()).log(Level.SEVERE, null, ex);
            }
 
        } else {
            System.err.println("System tray is currently not supported.");
        }
    }
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        SystemTrayTest main = new SystemTrayTest();
    }
 
}
Merci d'avance pour votre aide,

swordi