#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.