2016-04-23 92 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);