一般直接在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!
当Java工程打包成JAR后,直接访问图片等资源可能会遇到问题。解决方法包括将资源放入特定文件夹,如bin/images,并使用相对路径进行访问。在实现布局时,遇到一行最多四个元素的限制,通过生成随机数动态调整元素数量,以适应不同数量的笑脸图标显示。
1558

被折叠的 条评论
为什么被折叠?



