[英]Can't get a JPEG Image to display in JFrame
我正在嘗試在JFrame
上顯示一個背景圖像,用於我正在編程的小游戲。 圖像是.jpg,我不斷收到這些錯誤:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
at web.game.Base.<init>(Base.java:45)
at web.game.Base.main(Base.java:61)
我的代碼是:
Image myimage;
public Base() {
ImageIcon ii = new ImageIcon(this.getClass().getResource("myimage.jpg"));
myimage = ii.getImage();
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(myimage, 10, 10, null);
您可能遇到問題的原因有很多。 最明顯的開始,圖像不存在(或者至少不存在你認為它存在的地方)
private BufferedImage myImage;
public Board() {
try {
myimage = ImageIO.read(this.getClass().getResource("/myimage"));
} catch (IOException exp) {
exp.printStackTrace();
}
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (myImage != null) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(myimage, 10, 10, this);
System.out.println("Background Image");
}
}
使用getResource
您有兩個(基本)選擇。 相對或絕對。
使用相對路徑,類加載器將根據類的上下文開始搜索。 因此,如果您的圖像位於項目的根文件夾中,但您的類位於子文件夾(包)中,則相對路徑將不起作用,因為類加載器將從類所在的位置開始搜索。
絕對路徑將允許您從類路徑的根搜索,這將更有幫助,尤其是在您的情況下。
嘗試這樣的事情,看看你得到了什么......
System.out.println(TestReference.class.getResource("myimage.jpg"));
System.out.println(TestReference.class.getResource("/myimage.jpg"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.