读取带有 "ImageIO.read" 的图像路径以显示在 JLabel 中
Reading image path with "ImageIO.read" to be displayed in a JLabel
完整本地路径 (C:\Users\workspace\myproject\src\eclipse\mainclass\icons\my-image.png
) 工作正常,但使用如下代码中的短路径会出现异常 javax.imageio.IIOException: Can't read input file!
.
我做错了什么?
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 将捆绑源文件夹中的资源文件。
完整本地路径 (C:\Users\workspace\myproject\src\eclipse\mainclass\icons\my-image.png
) 工作正常,但使用如下代码中的短路径会出现异常 javax.imageio.IIOException: Can't read input file!
.
我做错了什么?
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 将捆绑源文件夹中的资源文件。