尝试显示徽标时遇到问题。图片与www.example.com保存在同一文件夹中main.java
ImageIcon im = new ImageIcon("banner.png"); JLabel bam = new JLabel(im); grid.add(bam);
我的语法有问题吗?
o0lyfsai1#
存在许多可能的问题,但最有可能的是,图像的位置与执行应用程序的位置不在同一上下文中。假设main.java位于某个目录中(为了方便起见,我们只说“path/to/class”),那么当您执行main.java时,图像的路径将变为类似/path/to/class的内容,这意味着您应该使用类似...的内容。
main.java
/path/to/class
ImageIcon im = new ImageIcon("path/to/class/banner.png");
这里还假设映像尚未被Jar'艾德,因为ImageIcon(String)需要文件系统上某个文件的路径。如果程序已经被Jar'艾德,那么您将无法使用ImageIcon(String),因为banner.png不再是一个文件,而是一个资源,那么您需要使用类似于...
ImageIcon(String)
banner.png
ImageIcon im = new ImageIcon(getClass().getResource("/path/to/class/banner.png"));
其中/path/to/class是main.java所在的包。无论哪种情况,我都建议您使用ImageIO.read,因为当出现问题时,这实际上会抛出IOException,而ImageIcon往往会默默地失败...有关详细信息,请参阅Reading/Loading an Image
ImageIO.read
IOException
ImageIcon
ibrsph3r2#
尝试ImageIcon im = new ImageIcon(new File("banner.png"));如果你用的是eclipse,把它放在根文件夹,而不是src文件夹,根文件夹有src文件夹和bin文件夹。
ImageIcon im = new ImageIcon(new File("banner.png"));
7cwmlq893#
如果在源目录中创建一个名为images(或您喜欢的任何名称)的文件夹,然后将banner.png文件放在该文件夹中,则可以使用以下代码。
ImageIcon im = new ImageIcon(this.getClass().getResource("/images/banner.png"));
zzzyeukh4#
我知道这是一个老帖子,但我的项目中也有同样的问题,并通过在ImageIcon定义中给出完整的路径而不仅仅是项目中的路径来修复它。
ImageIcon im = new ImageIcon("C:/your/image/file/path/banner.png);
它为我解决了这个问题,但我承认这不是一个有效的长期解决方案,因为它只能在开发人员的机器上工作,我不确定可移植性是否会成为一个问题。希望我帮到了什么人。
0x6upsns5#
这里可能有很多事情,如果没有更多的代码,很难判断。(并假设其他一切都正确)您应该使用getImageLoadStatus检查ImageIcon的图像加载状态()方法。如果它返回MediaTracker.COMPLETE,则可以继续,错误位于此代码之外的某个位置。如果它'如果不是COMPLETE,那么你在加载镜像时会遇到一些问题。也许它不在路径或类路径中?
5条答案
按热度按时间o0lyfsai1#
存在许多可能的问题,但最有可能的是,图像的位置与执行应用程序的位置不在同一上下文中。
假设
main.java
位于某个目录中(为了方便起见,我们只说“path/to/class”),那么当您执行main.java
时,图像的路径将变为类似/path/to/class
的内容,这意味着您应该使用类似...的内容。这里还假设映像尚未被Jar'艾德,因为
ImageIcon(String)
需要文件系统上某个文件的路径。如果程序已经被Jar'艾德,那么您将无法使用
ImageIcon(String)
,因为banner.png
不再是一个文件,而是一个资源,那么您需要使用类似于...其中
/path/to/class
是main.java
所在的包。无论哪种情况,我都建议您使用
ImageIO.read
,因为当出现问题时,这实际上会抛出IOException
,而ImageIcon
往往会默默地失败...有关详细信息,请参阅Reading/Loading an Image
ibrsph3r2#
尝试
ImageIcon im = new ImageIcon(new File("banner.png"));
如果你用的是eclipse,把它放在根文件夹,而不是src文件夹,根文件夹有src文件夹和bin文件夹。7cwmlq893#
如果在源目录中创建一个名为images(或您喜欢的任何名称)的文件夹,然后将banner.png文件放在该文件夹中,则可以使用以下代码。
zzzyeukh4#
我知道这是一个老帖子,但我的项目中也有同样的问题,并通过在
ImageIcon
定义中给出完整的路径而不仅仅是项目中的路径来修复它。它为我解决了这个问题,但我承认这不是一个有效的长期解决方案,因为它只能在开发人员的机器上工作,我不确定可移植性是否会成为一个问题。
希望我帮到了什么人。
0x6upsns5#
这里可能有很多事情,如果没有更多的代码,很难判断。(并假设其他一切都正确)您应该使用getImageLoadStatus检查ImageIcon的图像加载状态()方法。如果它返回MediaTracker.COMPLETE,则可以继续,错误位于此代码之外的某个位置。如果它'如果不是COMPLETE,那么你在加载镜像时会遇到一些问题。也许它不在路径或类路径中?