[英]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聲明如果發生這種情況
無法找到資源或調用者沒有足夠的權限來獲取資源。
檢查getResource
確實返回null
:
System.out.println(getClass().getResource("/Images/yahoo_1.gif"));
確保您的路徑正確並且它在您的類路徑中。
編輯 :
我剛剛嘗試使用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”) - 即相對路徑不是絕對的?
我有同樣的問題。 對我有用的是:
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.