Java TrayIcon displayMessage "может запускать ActionEvent", когда это происходит или нет?

При использовании 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

'Май'? Спасибо, документация.

На моей тестовой виртуальной машине Windows 2000 нажатие на сообщение не запускает ActionEvent (к сожалению, у меня нет новых лицензий Windows для тестирования), в то время как тот же код запускает одну в Ubuntu и OS X.

Примечание. Нажатие на саму иконку вызывает событие на слушателе мыши.

Так или иначе, мои конкретные вопросы:

  1. Верно ли, что нажатие на уведомление не запускает ActionEvent в Windows 2000, или я что-то не так делаю?

  2. Работает ли он для запуска ActionEvent в Windows XP или Windows 7?

Минимальный пример кода ниже. Когда я запускаю это с помощью java Test в Windows 2000 нажатие на уведомление не приводит к выводу командной строки.

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 ответ

Проблема, с которой вы сталкиваетесь, - это проблема кроссплатформенной имплантации, поэтому она может вызвать событие

Другие вопросы по тегам