有没有办法加载(使用新的File())已导入到项目文件夹的图像?

时间:2019-04-08 15:04:10

标签: java

在没有完整图像路径的情况下,无法使用新File()将图像加载到BufferedImage对象中。

当我尝试使用新File()将image.png加载到BufferedImage对象中时,我会遇到结果:

  1. 成功-当我编写整个路径(C:// Users // benja // Desktop / ...)时,效果很好
  2. 失败-当我写入导入到项目中的图像的路径时。即使我正在使用新的File(...),有没有办法使其工作?
    public class PicturePanel extends JPanel {

    BufferedImage image=null;

    public PicturePanel() {
        try {
            image = ImageIO.read(new 

            /*Works fine with full path: */
            File("C://Users//benjamin//Desktop//Pictures//whiteFish.png"));

            /*fail - throw an exception: */
            //image = ImageIO.read(new 
            File("//RandomThingsInGui/whiteFish.png"));

        } catch (IOException e) { e.printStackTrace(); }

        repaint();
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0,0,500,250,null);
    }   

    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.add(new PicturePanel());
        f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.setSize(600,400);
        f.setVisible(true);
    }

我需要知道是否有一种方法(以及如何)从导入的路径(我的意思是从eclipse内部)加载图像,或者当我使用新的File(...)时必须使用完整路径。

感谢帮手:)

1 个答案:

答案 0 :(得分:1)

将“ whiteFish.png”文件复制到“ RandomThingsInGui”目录。 你可以试试吗?

try {
    // AS-IS
    //image = ImageIO.read(new File("//RandomThingsInGui/whiteFish.png"));

    // TO-BE (replace '//' to '/')
    image = ImageIO.read(new File("/RandomThingsInGui/whiteFish.png"));
} catch (IOException e) { 
    e.printStackTrace();
}