2015-05-06 59 views
1

我有一個TrayIcon,偶爾會通過displayMessage()顯示彈出窗口/氣球消息。 TrayIcon本身有一個ActionListener,它工作正常。根據文檔,至少在某些平臺上(例如Win 8),單擊消息泡泡本身會觸發該圖標的監聽器事件。
到目前爲止好,但我想實現獨立的行爲Java Swing TrayIcon氣球消息 - 實現與主圖標不同的actionlistener?

  1. 用戶通過點擊系統托盤
  2. 用戶點擊消息氣泡圖標本身(在這種情況下,什麼也不做)

有沒有一個這樣做的優雅方式?
我認爲可能有傳遞給ActionListener.actionPerformed()的ActionEvent屬性,它可以區分兩個點擊源,但找不到一個。

任何想法?如果有幫助,該應用只能在Windows上運行。

+0

你可以直接附加一個ActionListener到TrayIcon,如果失敗了,你可以嘗試使用MouseListener支持,它應該處理情況1 – MadProgrammer

回答

0

我有一種方法,當我使用我的休息服務推送消息時,在我的系統托盤圖標上的氣球中顯示消息。您可以將動作偵聽器添加到顯示的消息中,您可以使用該動作在actionperfomed方法中執行任何操作。

public void displayMessage(String psTitle, String psMessage, final MessageType poType){ 
    moTrayIcon.displayMessage(psTitle, psMessage, poType); 
    moTrayIcon.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      try { 
       Desktop dst = Desktop.getDesktop(); 
       String location = "D:\\dev"; 
       dst.open(new File(location)); 
       //location = "D:\\"; // again setting root location      
      } catch (Exception ex) { 
       LOGGER.error("------- error with folder opening double click " 
         + ex.getMessage()); 
      } 

     } 
    }); 

}