我正在尝试为我编写的这个数学练习程序构建一个工具栏。我试图从名为images的文件夹中获取图像。它不允许我这样做。它给了我一个NullPointerException,我将用 * 标记行,Exception指向这些行。
public JButton makeNavigationButton( String imageName, String toolTipText ) {
String imgLocation = "images/" + imageName + ".jpg";
URL imageURL = MathPractice.class.getResource(imgLocation);
JButton button = new JButton();
button.setToolTipText(toolTipText);
//button.addActionListener(this);
button.setIcon( new ImageIcon( imageURL )); //************* NPE here
return button;
}
答案 0 :(得分:1)
Class.getResource()的文档说:
查找具有给定名称的资源。搜索资源的规则 与给定类相关联的是由定义类实现的 班级装载机。此方法委托给此对象的类 装载机。如果这个对象是由bootstrap类加载器加载的,那么 method委托给ClassLoader.getSystemResource(java.lang.String)。
在委托之前,从中构造绝对资源名称 使用此算法给定资源名称:
如果名称以'/'('\ u002f')开头,则资源的绝对名称是'/'后面的名称部分。 否则,绝对名称的格式如下:
modified_package_name/name
其中modified_package_name是此对象的包名称,其中'/'替换为'。' ( '\ u002e')。
使用Eclipse,如果目录images
在bin
中,则会找到它。将images
移至src/images
。