【发布时间】:2014-01-02 16:43:06
【问题描述】:
我试图在同一个窗口中加载多个图像,所以为了防止大量复制和粘贴,我制作了一个名为 badgeIMG 的图像类,如下所示:
package BattleSim;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class badgeIMG extends JPanel{
Image badgeIcon;
String badgePath;
int x = 0;
int y = 0;
public badgeIMG() {
ImageIcon ii = new ImageIcon(this.getClass().getClassLoader().getResource(badgePath));
badgeIcon = ii.getImage();
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(badgeIcon, x, y, null);
}
}
然后在另一个名为badgeSelectionWindow的类中,我有这段代码:
badgeIMG allOrNothingBadge = new badgeIMG();
badgeIMG closeCall = new badgeIMG();
allOrNothingBadge.badgePath = "/Badges/allornothing.gif";
allOrNothingBadge.x = 128;
allOrNothingBadge.y = 144;
closeCall.badgePath = "/Badges/closecall.gif";
closeCall.x = 256;
closeCall.y = 144;
add(allOrNothingBadge);
add(closeCall);
问题是,当我从上面的代码中声明一个badgePath时,我得到了一个NullPointerException,但是当我用一个真实的文件路径替换badgePath时,它不会给我错误,但我希望能够插入带有文件路径的字符串,并让它显示多个图像。有什么想法吗?
这是错误:
Exception in thread "main" java.lang.NullPointerException
at sun.misc.MetaIndex.mayContain(Unknown Source)
at sun.misc.URLClassPath$JarLoader.getResource(Unknown Source)
at sun.misc.URLClassPath.getResource(Unknown Source)
at sun.misc.URLClassPath.getResource(Unknown Source)
at java.lang.ClassLoader.getBootstrapResource(Unknown Source)
at java.lang.ClassLoader.getResource(Unknown Source)
at java.lang.ClassLoader.getResource(Unknown Source)
at BattleSim.badgeIMG.<init>(badgeIMG.java:17)
at BattleSim.badgeSelectionWindow.<init>(badgeSelectionWindow.java:11)
at BattleSim.badgeSelectionWindow.main(badgeSelectionWindow.java:36)
【问题讨论】:
-
仅供参考,这是JDK-8136831,已在 JDK-9 中修复。
标签: java nullpointerexception imageicon