2013-06-29 58 views
1

所以我想要的是當我的程序運行時(這是一個系統托盤)其中一個小的通知問題出現在屏幕的右下角。我試過了。系統托盤displayMessage()沒有顯示

trayIcon = new TrayIcon(image, "Title", popup); 
trayIcon.setImageAutoSize(true); 
trayIcon.displayMessage("Title", "MESSAGE HERE", TrayIcon.MessageType.ERROR) //THIS IS THE LINE THAT SHOULD SHOW THE MESSAGE 

程序運行時應該在哪裏運行,並且是正確的參數方法?

回答

4

你有讀過How to Use the System Tray

然而

檢查這個小例子:

tray.add(trayIcon);後不是顯示你的消息。

import java.awt.AWTException; 
import java.awt.Graphics2D; 
import java.awt.SystemTray; 
import java.awt.TrayIcon; 
import java.awt.image.BufferedImage; 
import java.net.URL; 
import javax.imageio.ImageIO; 
import javax.swing.SwingUtilities; 

public class Test { 

    public Test() throws Exception { 
     initComponents(); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        new Test(); 
       } catch (Exception ex) { 
        ex.printStackTrace(); 
       } 
      } 
     }); 
    } 

    private void initComponents() throws Exception { 
     createAndShowTray(); 
    } 

    private void createAndShowTray() throws Exception { 
     //Check the SystemTray is supported 
     if (!SystemTray.isSupported()) { 
      System.out.println("SystemTray is not supported"); 
      return; 
     } 

     //retieve icon form url and scale it to 32 x 32 
     final TrayIcon trayIcon = new TrayIcon(resizeImage(ImageIO.read(
       new URL("http://www.optical-illusions.in/illusions/blue_rotation_optical_illusion.jpg")), BufferedImage.TYPE_INT_ARGB, 32, 32)); 

     //get the system tray 
     final SystemTray tray = SystemTray.getSystemTray(); 

     try { 
      tray.add(trayIcon); 
     } catch (AWTException e) { 
      System.out.println("TrayIcon could not be added."); 
     } 

     trayIcon.displayMessage("Title", "MESSAGE HERE", TrayIcon.MessageType.ERROR); //THIS IS THE LINE THAT SHOULD SHOW THE MESSAGE 

    } 

    private static BufferedImage resizeImage(BufferedImage originalImage, int type, int IMG_WIDTH, int IMG_HEIGHT) { 
     BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type); 
     Graphics2D g = resizedImage.createGraphics(); 
     g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null); 
     g.dispose(); 

     return resizedImage; 
    } 
} 
+1

哦,我看到我在做什麼錯了,我不得不在tray.add(trayIcon)後添加它;嘗試catch語句。有道理,謝謝。 – user2526311