为什么Java';s AWT&x27;在显示消息时,s托盘图标是否会吞下事件?
使用Java8和AWT,我在Windows10上显示了一个托盘图标。我还使用托盘图标显示通知。显示此通知时,图标中的鼠标侦听器不会发出第一次按下并单击的事件 以下是最起码的例子:为什么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)
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