2013-07-01 45 views
0

我目前正在處理一個JFrame最小化到系統托盤,和我做得很成功如下所示:的JFrame - 圖標不顯示在任務欄中的JFrame的時候已經被最小化

// 
    URL resource = panel.getClass().getClassLoader().getResource("boston.png"); 
    System.out.println("rfc95Panel.getClass().getClassLoader().getResource() is: " + rfc95Panel.getClass().getClassLoader().getResource("boston.png")); 

    Image image = Toolkit.getDefaultToolkit().getImage(resource); 

    // 
    frame.setIconImage(image); 

    // 
    if (SystemTray.isSupported()) { 
     final TrayIcon icon = new TrayIcon(image); 
     icon.setToolTip("Program minimised"); 

     // 
     icon.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       frame.setVisible(true); 
       frame.setExtendedState(frame.NORMAL); 
       getSystemTray().remove(icon); 
      } 
     }); 

     // Adds the specified window state listener to receive window events 
     // from this window. If l is null, no exception is thrown and no action 
     // is performed. 
     frame.addWindowListener(new WindowAdapter() { 

      @Override 
      public void windowIconified(WindowEvent e) { 
       frame.setVisible(false); 
       try { 
        getSystemTray().add(icon); 
       } catch (AWTException e1) { 
        e1.printStackTrace(); 
       } 
      } 
     }); 
    } 

的問題是最小化,我不能看到圖像/圖標,當我打開系統盤即當我可以看到工具提示,但我不能看到有關我的程序圖標 - 見下文

sys tray image

任何圖像關於我失蹤的想法?我覺得這可能是一些基本的東西。

+1

您確定您的bosten.png文件已正確加載嗎? – Grammin

+1

爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

+0

嗨Grammin,感謝您的答覆..圖像加載正確..我可以通過在控制檯上打印圖像位置rfc95Panel.getClass()。getClassLoader()。getResource()是:file:/ C: /Users/TestProject/bin/boston.png ..我也可以在程序打開時看到任務欄上的圖像。 – TokTok123

回答

1

我遇到的上述問題的簡單答案是我打算用作sys托盤圖標的圖像的大小。基本上我的尺寸是64乘64,但理想情況下,應該是在我的情況下尺寸更小,我將圖像縮小到16乘16。