Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java';s AWT&x27;在显示消息时,s托盘图标是否会吞下事件?_Java_Windows_Awt - Fatal编程技术网

为什么Java';s AWT&x27;在显示消息时,s托盘图标是否会吞下事件?

为什么Java';s AWT&x27;在显示消息时,s托盘图标是否会吞下事件?,java,windows,awt,Java,Windows,Awt,使用Java8和AWT,我在Windows10上显示了一个托盘图标。我还使用托盘图标显示通知。显示此通知时,图标中的鼠标侦听器不会发出第一次按下并单击的事件 以下是最起码的例子: import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class TrayIconDemo { public static void main(String[] args)

使用Java8和AWT,我在Windows10上显示了一个托盘图标。我还使用托盘图标显示通知。显示此通知时,图标中的鼠标侦听器不会发出第一次按下并单击的事件

以下是最起码的例子:

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);
    }
}
如果按原样运行示例并单击图标两次,则会得到预期的六个事件(每次单击三个):

现在,如果取消最后一行的注释,即调用
displayMessage
的那一行,则会得到一条小消息:

但如果您单击图标两次,则会得到:

Mouse Released
Mouse Pressed
Mouse Released
Mouse Clicked
最初的
按下
点击
事件被吞没在某处。为什么呢

单击托盘图标时,消息不会消失。如果您关闭该消息,则托盘图标在所有6个事件中都能正常工作

下面是一段视频,展示了这个问题:


对于我来说,即使在取消最后一行的注释后,仍然会打印所有6行,您能详细说明一下这个过程吗?@aKilleR:您使用的是什么版本的Windows?我正在使用Windows 10 Pro,以防万一。@aKilleR:我不确定还能添加什么,所以我录制了一段关于我的问题的视频。
Mouse Released
Mouse Pressed
Mouse Released
Mouse Clicked