Java TrayIcon displayMessage'可能会触发ActionEvent'什么时候/它不是?

时间:2012-07-26 16:19:53

标签: java notifications trayicon windows-2000

使用TrayIcon.displayMessage显示弹出通知时,Java 6文档指出“点击该消息可能会触发一个ActionEvent。'

http://docs.oracle.com/javase/6/docs/api/java/awt/TrayIcon.html#displayMessage%28java.lang.String,%20java.lang.String,%20java.awt.TrayIcon.MessageType%29

'五月&#39 ;?谢谢,文档。

在我的Windows 2000测试虚拟机上,单击该消息似乎不会触发ActionEvent(遗憾的是我不会拥有任何较新的Windows许可证进行测试),而相同的代码在Ubuntu和OS X中触发一个

注意:单击图标本身会触发鼠标侦听器上的事件。

所以无论如何,我的具体问题是:

  1. 我是否正确点击通知不会触发Windows 2000中的ActionEvent,或者我做错了什么?

  2. 在Windows XP或Windows 7中触发ActionEvent是否有效?

  3. 下面是最小的示例代码。当我在Windows 2000中使用java Test运行它时,单击通知不会生成任何命令行输出。

    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.BufferedImage;
    
    import javax.swing.SwingUtilities;
    
    public class Test
    {
        public static void main(String[] args)
        {
            SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    TrayIcon icon = new TrayIcon(
                        new BufferedImage(16, 16, BufferedImage.TYPE_INT_RGB));
                    icon.addActionListener(new ActionListener()
                    {
                        @Override
                        public void actionPerformed(ActionEvent arg0)
                        {
                            System.err.println("ActionEvent: " + arg0);
                        }
                    });
                    try
                    {
                        SystemTray.getSystemTray().add(icon);
                    }
                    catch(AWTException e)
                    {
                        e.printStackTrace();
                    }
                    icon.displayMessage("New message", "Can you click on this?",
                        TrayIcon.MessageType.INFO);
                }
            });
        }
    }
    

1 个答案:

答案 0 :(得分:1)

您正在处理的问题是跨平台植入问题,这就是“可能”触发事件的原因