Почему значок AWT на панели задач Java проглатывает события при отображении сообщения? - PullRequest
0 голосов
/ 10 мая 2018

Используя Java 8 и AWT, я показываю иконку в трее в Windows 10. Я также использую иконку в трее для отображения уведомлений.При отображении этого уведомления прослушиватель мыши на значке не будет генерировать событие первого нажатия и нажатия.

Вот минимальный пример:

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class TrayIconDemo {
    public static void main(String[] args) {
        createTrayIcon();
    }

    private static void createTrayIcon() {
        Image image = Toolkit.getDefaultToolkit().getImage(TrayIconDemo.class.getResource("/foo.png"));
        final TrayIcon trayIcon = new TrayIcon(image);

        trayIcon.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                System.out.println("Mouse Clicked");
            }

            public void mousePressed(MouseEvent e) {
                System.out.println("Mouse Pressed");
            }

            public void mouseReleased(MouseEvent e) {
                System.out.println("Mouse Released");
            }
        });

        try {
            SystemTray.getSystemTray().add(trayIcon);
        } catch (AWTException e) {
            System.out.println("TrayIcon could not be added.");
            return;
        }

//        trayIcon.displayMessage("title", "message", TrayIcon.MessageType.NONE);
    }
}

Если вы запустите пример как есть идважды щелкните значок, и вы получите шесть ожидаемых событий (по три на каждый клик):

Mouse Pressed
Mouse Released
Mouse Clicked
Mouse Pressed
Mouse Released
Mouse Clicked

Теперь, если вы раскомментируете последнюю строку, которая вызывает displayMessage, вы получите небольшое сообщение:

enter image description here

но если дважды щелкнуть значок, вместо этого вы получите:

Mouse Released
Mouse Pressed
Mouse Released
Mouse Clicked

Начальные pressed и clicked события где-то проглочены.Почему это так?

Когда вы нажимаете на иконку в трее, сообщение не исчезает.Если вы отклоните сообщение, то значок в трее будет работать, как и ожидалось, со всеми 6 событиями.

Вот видео, показывающее проблему:

https://www.youtube.com/watch?v=eV2Lwim2EcY

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...