我是java GUI的初学者。并希望从文件夹访问图像,但我收到以下错误。
我的代码
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));
}
}
当我尝试在main中运行这个时,我得到以下错误。我不知道这里发生了什么。
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 :(得分:0)
您不使用类加载器从硬盘驱动器中获取文件。相反,您需要将其作为File
s获取并首先转换为Image
:
File sourceimage = new File("c:\\mypic.jpg");
Image image = ImageIO.read(sourceimage);
return new ImageIcon(image);
(直接来自this site - 看看)
答案 1 :(得分:0)
您正在尝试使用带有URL参数的constroctur构造ImageIcon对象(因为getResource()方法返回URL对象,顺便说一下,它返回null,因此返回NullPointerException)
您应该使用ImageIcon(String filename)构造函数,这将从指定的文件创建ImageIcon。
答案 2 :(得分:0)
从本地文件夹中读取
File sourceimage = new File("c:\\picture_name.jpeg");
Image image = ImageIO.read(sourceimage);