Java JButton上的图像图标未显示在可运行JAR文件中
我的GUI上有6个JButton,上面都有图像, 当我编译并运行代码时,JButtons上的所有图像都会完美地显示出来 但在runnable JAR文件中,JButtons上的图像不会显示。。如何解决此问题 我在代码中使用此方法在JButtons上显示图标Java JButton上的图像图标未显示在可运行JAR文件中,java,image,swing,awt,embedded-resource,Java,Image,Swing,Awt,Embedded Resource,我的GUI上有6个JButton,上面都有图像, 当我编译并运行代码时,JButtons上的所有图像都会完美地显示出来 但在runnable JAR文件中,JButtons上的图像不会显示。。如何解决此问题 我在代码中使用此方法在JButtons上显示图标 ImageIcon SettingsIc = new ImageIcon("bin/images/settings.png"); jb1 = new JButton(SettingsIc); jb1.setFocusPainted( fals
ImageIcon SettingsIc = new ImageIcon("bin/images/settings.png");
jb1 = new JButton(SettingsIc);
jb1.setFocusPainted( false );
//jb1.setBorderPainted(false);
jb1.setContentAreaFilled(false);
这就是我在Eclipse中编译代码时GUI的外观
这就是我的GUI在执行可运行JAR文件后的样子
这(正如许多人所指出的)
表示您正试图从文件系统的bin/images
加载图像。这是从应用程序的执行点开始的相对路径
如果文件不存在,ImageIcon
不会抱怨
如果可能的话,最好将资源嵌入Jar文件中(这将使部署更容易),并使用类似于getClass().getResource(“/bin/images/settings.png”)
的方法加载图像
如果可能,您应该尝试使用
ImageIO.read(URL)
加载图像,如果文件所指向的资源不存在(或无效),它将引发异常。只需将jar和图像保存在同一文件夹中,然后重试
保持
ImageIcon图标=新的ImageIcon(“image.jpg”)代码>
在代码中您可能试图访问图像,因为jar文件中不存在文件和文件。相反,尝试将它们作为资源访问。这个问题已经在这个网站和其他网站上被问过很多次了(包括我的几个答案),你可以很容易地通过搜索找到更多关于这个问题的信息。试试看,你不会失望的。祝你好运。那些图标的路径正确吗?在jar文件中?在bin/images/settings.png下?@HovercraftFullOfEels我想你又一次“一针见血”。至于“可能”的注意事项,newimageicon(“bin/images/settings.png”)
支持文件
的一部分,其名称模糊地暗示应用程序资源应该是一个应用程序资源。@user2003602:请看一看,谢谢你的回答,我一定会尝试你提到的方法。但我注意到,如果我解压缩我的jar文件,其中有一个名为images的文件夹,是否可以访问该文件夹?是的。我想它应该是/images/settings.png
而不是/bin/images/settings.png
,但这取决于目录structure@user2003602:同样,这取决于您的jar目录结构,这是我们不太清楚的。麦德的建议很贴切。1+@user2003602也-确保您使用的是getClass().getresource(…)
而不仅仅是普通字符串值。字符串
值表示文件资源,嵌入式资源不是文件。这不是答案。上面已经给出了答案,提问者也接受了答案。
ImageIcon SettingsIc = new ImageIcon("bin/images/settings.png");