将鼠标悬停在系统托盘上并在 Java 中打开气球

Hover over system Tray and open a balloon in Java

如何将鼠标悬停在系统托盘上并在 Java 中打开气球?我可以打开工具提示,但不能打开气球。

但是,我可以右键单击该图标并执行 actionPerformed 并执行此操作以打开气球

trayIcon.displayMessage(title, message, TrayIcon.MessageType.INFO)

您始终可以使用 MouseListener 和 MouseMotionListener 自己模拟工具提示行为:

String message = "Application running";

int hoverTime = 1000;
Timer messageTimer = new Timer(hoverTime,
    e -> trayIcon.displayMessage(null, message,
        TrayIcon.MessageType.INFO));
messageTimer.setRepeats(false);

trayIcon.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseEntered(MouseEvent event) {
        messageTimer.restart();
    }

    @Override
    public void mouseExited(MouseEvent event) {
        messageTimer.stop();
    }
});
trayIcon.addMouseMotionListener(new MouseMotionAdapter() {
    @Override
    public void mouseMoved(MouseEvent event) {
        messageTimer.restart();
    }
});

请注意 Timer 是 javax.swing.Timer,而不是 java.util.Timer,因为前者保证其操作将在 AWT 事件调度线程中执行。