Наведите курсор на системный трей и откройте воздушный шар в Java

Как мне навести курсор на системный трей и открыть воздушный шар в Java? Я могу открыть подсказку, но не могу открыть воздушный шар.

Тем не менее, я могу щелкнуть правой кнопкой мыши на значке и выполнить действие "Выполнено" и сделать это, чтобы открыть воздушный шар

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

1 ответ

Решение

Вы всегда можете эмулировать поведение всплывающей подсказки самостоятельно с помощью 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.

Другие вопросы по тегам