一般直接在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!