我的項目中有一個圖像文件。層次結構是這樣的:在Netbeans中讀取圖像
我想使用此代碼讀取Manling.png到Manling.java:
public BufferedImage sprite;
public Manling()
{
try
{
File file = new File("resources/Manling.png");
sprite = ImageIO.read(file);
} catch (IOException e) {}
System.out.println(sprite.toString()); //This line is to test if it works
}
我總是在println
說法得到了NullPointerException
,使我認爲路徑是錯誤的。我嘗試將圖像移動到項目中的不同位置,並嘗試更改文件路徑(例如'mine/resources/Manling.png'和'/resources/Manling.png')。有任何想法嗎?
如果你想有一個完整的編譯例如,試試這個:
package minesscce;
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import java.net.URL;
public class Mine extends JFrame
{
private BufferedImage sprite;
public static void main(String args[])
{
Mine mine = new Mine();
}
public Mine()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize(800, 600);
setExtendedState(Frame.MAXIMIZED_BOTH);
setBackground(Color.WHITE);
try
{
File file = new File("resources/Manling.png");
sprite = ImageIO.read(file);
} catch (IOException e) {}
System.out.println(sprite.toString());
}
public void paint(Graphics g)
{
g.translate(getInsets().left, getInsets().top);
Graphics2D g2d = (Graphics2D)g;
g2d.drawImage(sprite, 0, 0, this);
Toolkit.getDefaultToolkit().sync();
g2d.dispose();
}
}
剛剛成立這樣的項目,使用任何你想要的形象:
當我的圖片在'mine.resources'和路徑是'../resources/Manling.png'時,我得到了它的工作。我不明白爲什麼,但我不會抱怨。謝謝! – Tharwen