2012-07-26 8 views
2

При использовании TrayIcon.displayMessage для отображения всплывающего уведомления документация на Java 6 гласит, что «нажатие на сообщение может вызвать ActionEvent».Java TrayIcon displayMessage 'может вызывать 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

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

+0

Я понимаю, что, но я думаю, что было бы полезно знать (для меня и другие), на каких платформах он фактически запускает событие. – sam

+0

О да, далекая точка;) – MadProgrammer

+0

Очевидно, что уведомление вызывает какое-то событие, потому что приложения C реагируют, когда я нажимаю, но Java нет. Я использую windows 10 btw. – Matthew