我有一个问题: 我将我的图像放在项目文件夹中,例如E:\ All Work IT \ Java All \ JavaWork \ TestingDB,当我使用这行代码来使用图像时
ImageIcon icon = new ImageIcon("start.png");
完美无缺! 但是当我想制作一个Runnable jar文件(Export - >选择Runnabable jar文件)并打开特定的jar时,图像不会出现在按钮,菜单等上。
我需要在哪里放置我的图片来解决这个问题,以及使用什么代码? 感谢。
答案 0 :(得分:2)
new ImageIcon(file)指定一个在JAR中无法工作的本地文件。尝试更改该行以使用类加载器。
new ImageIcon(getClass().getResource("/start.png"));
如果您处于静态环境
new ImageIcon(Foo.class.getResource("/start.png"));
我不确定您的项目结构或IDE(如果有的话),因此我无法就图像的位置提出任何建议。只需确保图像包含在JAR导出中并最终位于顶层,或者与getResource()调用匹配的结构
答案 1 :(得分:1)
如果最简单的方法是将图像包含在jar文件本身中,这将减少您需要部署的资源数量;更容易部署一个jar然后jar文件和一堆如果图像
它还减少了执行上下文可能出现的问题,并且必须计算相对路径
您实现这一目标取决于您如何构建jar,例如在Netbeans和Eclipse中,您可以将图像复制到src
目录中。在maven中,您需要将图像包含在resources
目录
这将改变您加载图像或资源所需的方式
根据您的需要,您需要使用Class#getResource
或Class#getResourceAsStream
,例如
ImageIcon img = getClass().getResource("/start.png");
请记住,您需要使用src
目录
这意味着如果您将resources
放在images
目录下的src
目录下,那么您需要使用/images/start.png
例如