2012-07-26 37 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. 難道我糾正一下通知沒有在Windows 2000中觸發一個ActionEvent,或者是有什麼我做錯了嗎?

  2. 它是否可以在Windows XP或Windows 7中觸發ActionEvent?

最小示例代碼如下。當我在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

我理解,但我認爲這將是知道的(對我有用,其他)它實際上觸發了一個事件的平臺。 – sam 2012-07-27 16:36:04

+0

哦,是的,遠點;) – MadProgrammer 2012-07-27 21:41:59

+0

很明顯,通知確實會導致某種事件,因爲C應用程序響應,當我點擊,但Java不。我使用Windows 10 btw。 – Matthew 2017-10-02 21:04:16