使用ImageIcon访问图片,无法访问它,如何修复?

时间:2018-04-17 06:25:30

标签: image swing file jframe imageicon

我正在使用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());}}

1 个答案:

答案 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);
}

通过此方法,您应该能够检索图像。我希望这会对你有所帮助。