Java中的netbeans,从java包中读取图像文件

时间:2015-05-23 10:17:55

标签: java netbeans relative-path javax.imageio

我想知道是否有人可以提供帮助?我一直在开发一个java应用程序,它在jframe上显示磁盘上的图像。 使用netbeans我在我的项目中创建了一个名为images的java包,并将图像存储在该包中。首先是我应该这样做的方式如果我希望它们与应用程序一起发货?

我有以下功能来阅读图像:

Image readImg(String file)
    {
        Image image = null;
        try {
            File imgFile = new File(file);
            image = ImageIO.read(imgFile);

        } catch (IOException e) {
            // System.out.println("Can not Display Image");
            e.printStackTrace();
        }
        if (image != null){       
        return image;
    } else{
        return null;
        }
    }

我的问题是我无法计算传递给函数的相对文件路径。我有图像显示调用它像这样:

Image headerImg = readImg("C:\\Users\\D@nb0y\\Documents\\NetBeansProjects\\GiftAidApp\\src\\images\\galogo.png");

显然,如果应用程序在任何其他设备上运行,这将彻底崩溃。任何人都可以告诉我这个代码是否可移植?

非常感谢

1 个答案:

答案 0 :(得分:0)

由于您尝试添加图片为JFrame,因此最好使用ImageIcon代替Image

试试这个:

ImageIcon image = new ImageIcon("images/galogo.png");
JLabel imageLabel = new JLabel(image);
frame.add(imageLabel);

如果您将images文件夹与项目一起包含在内,这应该可以让应用程序移植。