我试图在我的swing应用程序中显示图像,如果没有绝对文件寻址,似乎无法这样做。这是一个问题,因为我需要能够将此程序提供给其他人使用,并且不能只将它解决到我的计算机上。加载图像的代码如下:
public void loadImage(){
try{
BufferedImage img = ImageIO.read(new File("mock logo 128x128.png"));
logoImage = new JLabel(new ImageIcon(img));
}
catch(IOException e){
System.out.println("Logo not found");
e.printStackTrace();
}
}
我确定该文件位于src文件夹中,所以我知道这不是问题所在。如果我设置这样的代码:
public void loadImage(){
try{
BufferedImage img = ImageIO.read(new File("C:\\Users\\Dan\\Documents\\EXSoft\\ExSoft Workspace\\Septic Calculator Alpha\\src\\mock logo 128x128.png"));
logoImage = new JLabel(new ImageIcon(img));
}
catch(IOException e){
System.out.println("Logo not found");
e.printStackTrace();
}
}
一切都很完美。但如前所述,这不是一个可接受的解决方案。
答案 0 :(得分:1)
您将文件放在src文件夹中,因此将其打包为应用程序的一部分。它不在您的应用二进制文件之外因此,您必须使用ClassLoader#getResourceAsStream
。
示例:
BufferedImage img = ImageIO.read(YourClass.class.getClassLoader().getResourceAsStream("mock logo 128x128.png"));