Java 使用“读取图像路径”;ImageIO.read";在JLabel中显示
完整的本地路径(Java 使用“读取图像路径”;ImageIO.read";在JLabel中显示,java,swing,bufferedimage,embedded-resource,javax.imageio,Java,Swing,Bufferedimage,Embedded Resource,Javax.imageio,完整的本地路径(C:\\Users\\workspace\\myproject\\src\\eclipse\\mainclass\\icons\\my image.png)工作正常,但使用下面代码中的短路径会出现异常javax.imageio.IIOException:无法读取输入文件 我做错了什么 JLabel lab_h1 = new JLabel(); BufferedImage img = null; try { img = ImageIO.re
C:\\Users\\workspace\\myproject\\src\\eclipse\\mainclass\\icons\\my image.png
)工作正常,但使用下面代码中的短路径会出现异常javax.imageio.IIOException:无法读取输入文件代码>
我做错了什么
JLabel lab_h1 = new JLabel();
BufferedImage img = null;
try {
img = ImageIO.read(new File("icons/my-image.png"));
} catch (IOException e) {
e.printStackTrace();
}
Image dimg = img.getScaledInstance(140, 40,Image.SCALE_SMOOTH);
lab_h1.setIcon(new ImageIcon(dimg));
您遇到的问题是,当您尝试以相对路径打开文件时,它看起来与您运行程序的位置有关。您可以使用资源,而不是希望获得正确的路径
BufferedImage img = ImageIO.read(
YourClassName.class.getResource(
"/mainclass/icons/my-image.png"
)
);
我认为您可能需要修改路径,因为我不知道您的包结构是什么。我还假设eclipse将绑定源文件夹中的资源文件。如果您不想使用新文件,那么您就要使用资源。你们班的名字是什么?您应该执行新建图像图标(MyClassName.class.getResource())代码>那么您根本不需要使用BuffereImage。您使用的是哪个版本的java?哪个Eclipse版本?包含您在问题中发布的代码的类的名称是什么?那门课是打包的吗?如果是,包名是什么?包含了很多关于StackOverflow中什么是好问题的好建议。您的代码解决了这个问题。我认为我使用“新文件”而不是资源的方法是错误的。它现在正在正确地读取图像路径。@MELS很高兴听到它工作了。当您想读取应用程序中未包含的文件时,文件是良好的。由于您将此保留在源代码中,我希望您希望将其包含在应用程序中。