2016-04-23 94 views
1

我是初學者到Java GUI。並想從文件夾訪問圖像,但我收到以下錯誤。從JAVA中的圖像文件夾訪問圖像

我的代碼

import java.awt.Image; 

import javax.swing.ImageIcon; 

public class Images { 

    private static String IMG_FOLDER = "C:/Users/RASHID/workspace/images/"; 

    public static Image ICON = getImage(IMG_FOLDER + "icon.png"); 

private static Images instance; 

    private Images() {} 

    public static Images getInstance() { 
     if(instance==null) 
      instance = new Images(); 
     return instance; 
    } 

    public static Image getImage(String image){ 
     return getImageIcon(image).getImage(); 
    } 

    public static ImageIcon getImageIcon(String image){ 
     return new ImageIcon(getInstance().getClass().getClassLoader().getResource(image)); 
    } 
} 

當我嘗試運行這個主,我收到以下錯誤。我不知道這裏發生了什麼。

Exception in thread "main" java.lang.ExceptionInInitializerError 
Caused by: java.lang.NullPointerException 
    at javax.swing.ImageIcon.<init>(Unknown Source) 
    at Images.getImageIcon(Images.java:38) 
    at Images.getImage(Images.java:34) 
    at Images.<clinit>(Images.java:9) 
+0

你不使用的類加載器從硬盤驅動器只能從編譯的二進制文件的獲取。 – CptBartender

回答

0

您不使用類加載程序從硬盤中獲取文件。相反,你需要將它們取爲File S和轉化爲Image第一個:

File sourceimage = new File("c:\\mypic.jpg"); 
Image image = ImageIO.read(sourceimage); 
return new ImageIcon(image); 

(直接從this site拍攝 - 看看)

0

您嘗試使用constroctur是需要構建的ImageIcon對象URL參數(因爲getResource()方法返回URL對象,並通過在這種情況下它返回null,因此NullPointerException)

您應該使用ImageIcon(String filename)構造函數,它將從指定的文件創建ImageIcon。

+0

返回新的ImageIcon(getInstance()。getClass()。getClassLoader()。getResource(image)); 我想使用這個,但我如何使用這一個圖像駐留在驅動器 –

+0

getResource()方法查找運行時類路徑(默認bin文件夾)中的資源。例如,您可以將images文件夾添加到您的類路徑中。我認爲(儘管不要在這方面引用我),但是沒有辦法通過這種方法的絕對路徑。 –

0

閱讀從本地文件夾

File sourceimage = new File("c:\\picture_name.jpeg"); 
Image image = ImageIO.read(sourceimage);