Наведите курсор мыши на системный трей и откройте всплывающее окно в Java

#java #system-tray

#java #системный трей

Вопрос:

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

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

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.Таймер, а не java.util.Таймер, поскольку первый гарантирует, что его действие будет выполнено в потоке отправки событий AWT.