一般直接在Eclipse中运行JAVA工程的时候,是可以直接访问图片,文件等资源的,但是打包成JAR文件之后,因为常常会访问不到文件资源。


解决的办法是:

1.将图片等资源放在一个文件夹中,如本项目只有图片,所以我把所有的文件都放在images文件夹下。

2.将images放在工程中的bin/目录下。


3.可以利用相对路径访问图片资源。

//JLabel smile = new JLabel(new ImageIcon("smiley-face.png"));
java.net.URL imageURL = getClass().getResource("images/smiley-face.png");
ImageIcon image = new ImageIcon(imageURL);
image.setImage(image.getImage().getScaledInstance(63, 63, BufferedImage.SCALE_SMOOTH));
JLabel smile = new JLabel(image);
jp.add(smile);

4.此时可以通过jar访问文件资源了。

 

PS:程序要求笑脸的布局是一行最多四个,每四个才能换行,当时用的是网格布局GridLayout(3,4),但是当时3笑脸的时候,自动变成3行(每行一个),5个笑脸的时候,2行(3+2)。百度和google很久也没得到答案,郁闷了一个晚上,没有思路,第二天早上醒来,忽然灵机一动,随机数生成多少就画几个笑脸(ImageIcon),剩下的(12-随机数)就用空JLabel补上,结果OK!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐