簡體   English   中英

Java getImage() 位置(NetBeans IDE)

[英]Java getImage() location (NetBeans IDE)

我開始熟悉 NetBeans 並開始我的第一個 Java 教程。

我沒有看到我的系統托盤圖標出現,我懷疑我將圖標放置在項目文件中的錯誤位置。 這是我在 SysTray.java 中的代碼:

package systray;

import java.awt.*;

public class SysTray {

    public static void main(String[] args) {

        Runnable runner;
        runner = new Runnable() {

    public void run() {
      if (SystemTray.isSupported()) {
          SystemTray tray = SystemTray.getSystemTray();
          Image image = Toolkit.getDefaultToolkit().getImage("MyIcon.png");
          PopupMenu popup = new PopupMenu();
          MenuItem item = new MenuItem("A MenuItem");
          popup.add(item);
          TrayIcon trayIcon = new TrayIcon(image, "The Tip Text", popup);
          try {
            tray.add(trayIcon);
          } catch (AWTException e) {
            System.err.println("Can't add to tray");
          }
        } else {
          System.err.println("Tray unavailable");
        }

      }
    };
    EventQueue.invokeLater(runner);
  }
}

我將“MyIcon.png”放在與 SysTray.java (main) 相同的目錄中。 但實際上我猜這就是我應該放置它的地方。

這是目錄結構:

系統托盤/

  • 源包/ - systray/ - SysTray.java
  • 源包/ - 系統托盤/ - MyIcon.png
  • 圖書館/

我在系統托盤中看到圖標的空白區域,當我將鼠標懸停時,我確實看到了“提示文本”。 但是沒有圖標。

我也沒有收到來自 NetBeans 的關於丟失圖像的錯誤。 所以,我被困住了

您可以通過指定圖像的絕對路徑(例如“C:\\MyProjects\\projectname\\packagename\\MyIcon.png”)來使自己的方式工作

不過,您想要的是將圖像作為資源加載,而不是直接從文件系統加載(當您部署為 jar 時)。 像這樣:

String imageLocation = "/systray/MyIcon.png";
URL imageURL = this.getClass().getResource(imageLocation);
Image image = Toolkit.getDefaultToolkit().getImage(imageURL);

有關如何添加資源文件夾(用於圖像、音頻等)的信息,請參閱如何從 NetBeans 中的“Resources”文件夾中正確獲取圖像

圖像文件夾 - 使用 NetBeans IDE 12.x

將圖像(例如“Sample.png”)保存在“resources”文件夾中,該文件夾將與“java”文件夾位於同一層次結構中。 (在構建項目時,資源文件夾的內容會被自動提取出來,並與編譯的類一起發送到一個 jar 文件中。)jar 文件將存儲在父項目文件夾下的“目標”文件夾中。

接下來將資源文件夾的所有內容手動復制到項目文件夾,就像項目文件夾中的文件一樣。 (這些將用於 IDE 中的代碼測試)

用於在代碼中編碼圖像訪問,例如

img = ImageIO.read(new File("Sample.png"));  

只需輸入所需的圖像文件名。 構建項目,您將在“目標”文件夾中的 jar 文件中看到包含在 java 類中的圖像文件。 打開 jar 文件以查看編譯的類和圖像。

使用 java 命令“java classname”正常執行類文件。

要從命令行運行類文件,首先將 jar 解壓縮到計算機上的任何位置,然后 cd 到該文件夾​​。 *** 確保在更新或替換資源后始終將資源文件夾內容直接復制到項目文件夾***

這些文件夾之外的任何資源都需要額外的代碼來處理計算機中這些位置的絕對路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM