簡體   English   中英

為什么我的圖標處理代碼會拋出 NullPointerException?

[英]Why does my icon handling code throw a NullPointerException?

我已經為我的按鈕添加了一個圖像,但是當我運行該框架時,會拋出這個異常。為什么?請幫助我。

init:

deps-jar:
compile-single:
run-single:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
        at ClientGUI.IdAndPasswordFrame.initComponents(IdAndPasswordFrame.java:91)
        at ClientGUI.IdAndPasswordFrame.<init>(IdAndPasswordFrame.java:22)
        at ClientGUI.IdAndPasswordFrame$4.run(IdAndPasswordFrame.java:200)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD SUCCESSFUL (total time: 1 second)

第 138 行:

public ImageIcon (URL location) {
    this(location, location.toExternalForm());
}

第 91 行:

 jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yahoo_1.gif"))); // NOI18N

我使用這種糟糕的檢查(Peter Lang 推薦),即:System.out.println(getClass().getResource("/Images/yahoo_1.gif")); 它返回 null,為什么? 請幫我。

這意味着, getClass().getResource("/Images/yahoo_1.gif")返回null

JavaDoc聲明如果發生這種情況

無法找到資源或調用者沒有足夠的權限來獲取資源。

  1. 檢查getResource確實返回null
    System.out.println(getClass().getResource("/Images/yahoo_1.gif"));

  2. 確保您的路徑正確並且它在您的類路徑中。

編輯

我剛剛嘗試使用NetBeans。 我創建了以下結構

Source Packages
  Images
    yahoo_1.gif

你的代碼工作正常。 這是你的結構嗎?

嘗試右鍵單擊您的應用程序,然后選擇“ Clean and Build

為了解決這個問題,需要將映像復制到bin目錄中 - 而不是復制到src目錄中。

否則,你將在getClass()。getResource(“image.png”)上一直得到null。 該路徑不為null ,您可以將其設置為上述內容 - 僅當您復制二進制目錄中所需的圖像時,項目的.class文件所在的位置。

這解決了這個問題。 如果我幫助我,請告訴我。

伊萬娜

看起來像getClass().getResource("/Images/yahoo_1.gif")返回null即在類路徑中找不到.gif。 (圖像與圖像可能?)

傳入的URL在此行中為空:

getClass().getResource("/Images/yahoo_1.gif")

從JDK文檔:

[getResource(..)returns]用於讀取資源的URL對象,如果找不到資源或者調用者沒有足夠的權限來獲取資源,則返回null

也許你的意思是(“Images / yahoo_1.gif”) - 即相對路徑不是絕對的?

我有同樣的問題。 對我有用的是:

  1. 查看jar文件或bin文件夾(帶.class文件的文件夾)並查看圖像路徑。
  2. 項目清單
private class HandlerClass implements ActionListener{
        public void actionperformed(ActionEvent event){
            JOptionPane.showMessageDialog(null, String.format("%s", event.getActionCommand()));
        }

}

在嘗試添加圖像時查看了一些內容后,我遇到了與 maven 項目中通常出現的相同問題。

我找到了一個使用完整路徑來訪問圖像的解決方案。 此外,創建一個 function,它返回一個帶有圖像的圖標,並根據發送給它的尺寸自動縮放。

path -> 圖片所在目錄,width -> icon的寬度,heigth-> icon的高度 希望對你有幫助,這是我在社區的第一次投稿

public Icon getIcon(String ruta, int width, int heigth) {
        Image image = (new ImageIcon(ruta)).getImage().getScaledInstance(width, heigth, 0);
        Icon mIcono = new javax.swing.ImageIcon(image);
        return mIcono;
    }

暫無
暫無

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

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