Java图像没有显示?

时间:2013-12-02 00:15:28

标签: java image swing jlabel imageicon

尝试显示我的徽标时遇到问题。图片保存在与main.java相同的文件夹中

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

    grid.add(bam);

我的语法有问题吗?

5 个答案:

答案 0 :(得分:3)

尝试ImageIcon im = new ImageIcon(new File("banner.png"));如果您正在使用eclipse,请将其放在根文件夹中,而不是src文件夹中。根文件夹有src文件夹和bin文件夹。

答案 1 :(得分:3)

有任何可能的问题,但可能的问题是,图像的位置与执行应用程序的位置不在同一上下文中。

让我们说,main.java生活在某个目录中(为了论证,我们只说“path / to / class”),然后当你执行main.java时,图像的路径会变成某种东西比如/path/to/class,这意味着你应该使用像...这样的东西。

ImageIcon im = new ImageIcon("path/to/class/banner.png"); 

这也假设图像还没有Jar'ed,因为ImageIcon(String)需要文件系统上文件的路径。

如果该程序已被Jared,那么您将无法使用ImageIcon(String),因为banner.png不再是文件,而是资源,那么您需要使用类似的东西...

ImageIcon im = new ImageIcon(getClass().getResource("/path/to/class/banner.png"));

其中/path/to/classmain.java所在的包裹。

在任何一种情况下,我都建议您使用ImageIO.read代替,因为当出现问题时,这实际上会抛出IOException,而ImageIcon往往会无声地失败...... < / p>

请查看Reading/Loading an Image了解详情

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

我知道这是一篇旧帖子,但我在我的项目中遇到了同样的问题并通过提供ImageIcon定义中的完整路径来修复它,而不仅仅是项目中的路径。即

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

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

希望我帮助了某个人。

答案 4 :(得分:-1)

这里可能会发生很多事情,如果没有更多代码,很难说清楚。基于上面的简短片段(并假设其他一切都正确),您应该使用getImageLoadStatus()方法检查ImageIcon的图像加载状态。如果它返回MediaTracker.COMPLETE那么你就可以了,错误就在这段代码之外。如果它不是COMPLETE那么你在加载图像时会遇到某种问题。也许它不在路径或类路径中?