我正在使用ImageIcon来访问我裁剪过的照片。我将所有裁剪的图片放在项目旁边的pic源文件夹中。然而,当我尝试使用this.getClass()。getResource(“image 2.png”)来查找图像2.png照片时,代码找不到它。无论如何要解决这个问题,我是否必须将所有图片重新上传到另一个文件夹?
“image 2.png”位于pic源文件夹内,该文件夹位于项目Alle的文件夹中,根据右侧的导航器面板。 (我正在使用eclipse)
这是我的代码:
import java.awt.*;
import java.io.File;
import java.io.IOException;
import javax.swing.*;
public class alle extends JFrame {
JButton button1, button2;
JLabel Label1, Label2;
ImageIcon Icon1;
ImageIcon Icon2;
public alle() {
setLayout(new GridLayout(2,3)); //create a gridwolrd like thing that's like 2 row, 3 column
button1 = new JButton("set");
add(button1);
Label1 = new JLabel(" button");
add(Label1);
Icon1 = new ImageIcon(this.getClass().getResource("/alle/pic/image 2.png")) ;
JLabel p = new JLabel(Icon1);
add(p);
}
public static void main (String arg[]) {
alle adfc = new alle();
adfc.setResizable(false);
adfc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
adfc.setVisible(true);
adfc.pack();
File f = new File ("/alle/pic/image 2.png");
System.out.print(f.exists());}}
答案 0 :(得分:0)
一年前我也遇到过这种问题。您应该能够通过编写用于检索图像的加载器方法来解决它。你可以在这篇文章中找到一个对我有用的详细答案:Images Won't Appear In A Jar
如果您不想阅读整篇文章,那么应该解决问题的代码示例,您只需根据需要进行调整:
public ImageIcon loadIcon(String iconName) throws IOException {
ClassLoader loader = this.getClass().getClassLoader();
BufferedImage icon = ImageIO.read(loader.getResourceAsStream(iconName));
return new ImageIcon(icon);
}
通过此方法,您应该能够检索图像。我希望这会对你有所帮助。