Tôi có một tệp hình ảnh trong dự án của mình. Các hệ thống phân cấp như sau:Đọc một hình ảnh trong Netbeans
Tôi đang cố gắng để đọc Manling.png vào Manling.java sử dụng mã này:
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
}
tôi luôn có được một NullPointerException
trên báo cáo kết quả println
, vì vậy Tôi cho rằng con đường là sai. Tôi đã thử di chuyển hình ảnh đến các địa điểm khác nhau trong dự án và tôi đã thử thay đổi đường dẫn tệp (ví dụ: 'mine/resources/Manling.png' và '/resources/Manling.png'). Bất kỳ ý tưởng?
Nếu bạn muốn có một ví dụ compilable đầy đủ, hãy thử điều này:
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();
}
}
Chỉ cần thiết lập các dự án như thế này, sử dụng bất kỳ hình ảnh bạn muốn:
Tôi nhận nó hoạt động khi hình ảnh ở trong 'mine.resources' và đường dẫn là '../resources/Manling.png'. Tôi không hiểu tại sao, nhưng tôi sẽ không phàn nàn. Cảm ơn! – Tharwen