Java映像未显示?

2g32fytz  于 2022-12-21  发布在  Java
关注(0)|答案(5)|浏览(121)

尝试显示徽标时遇到问题。图片与www.example.com保存在同一文件夹中main.java

ImageIcon im = new ImageIcon("banner.png"); 
    JLabel bam = new JLabel(im); 

    grid.add(bam);

我的语法有问题吗?

o0lyfsai

o0lyfsai1#

存在许多可能的问题,但最有可能的是,图像的位置与执行应用程序的位置不在同一上下文中。
假设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 im = new ImageIcon(getClass().getResource("/path/to/class/banner.png"));

其中/path/to/classmain.java所在的包。
无论哪种情况,我都建议您使用ImageIO.read,因为当出现问题时,这实际上会抛出IOException,而ImageIcon往往会默默地失败...
有关详细信息,请参阅Reading/Loading an Image

ibrsph3r

ibrsph3r2#

尝试ImageIcon im = new ImageIcon(new File("banner.png"));如果你用的是eclipse,把它放在根文件夹,而不是src文件夹,根文件夹有src文件夹和bin文件夹。

7cwmlq89

7cwmlq893#

如果在源目录中创建一个名为images(或您喜欢的任何名称)的文件夹,然后将banner.png文件放在该文件夹中,则可以使用以下代码。

ImageIcon im = new ImageIcon(this.getClass().getResource("/images/banner.png"));
zzzyeukh

zzzyeukh4#

我知道这是一个老帖子,但我的项目中也有同样的问题,并通过在ImageIcon定义中给出完整的路径而不仅仅是项目中的路径来修复它。

ImageIcon im = new ImageIcon("C:/your/image/file/path/banner.png);

它为我解决了这个问题,但我承认这不是一个有效的长期解决方案,因为它只能在开发人员的机器上工作,我不确定可移植性是否会成为一个问题。
希望我帮到了什么人。

0x6upsns

0x6upsns5#

这里可能有很多事情,如果没有更多的代码,很难判断。(并假设其他一切都正确)您应该使用getImageLoadStatus检查ImageIcon的图像加载状态()方法。如果它返回MediaTracker.COMPLETE,则可以继续,错误位于此代码之外的某个位置。如果它'如果不是COMPLETE,那么你在加载镜像时会遇到一些问题。也许它不在路径或类路径中?

相关问题