Java 图像未显示?

lec*_*rdo 4 java swing image jlabel imageicon

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

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

    grid.add(bam);
Run Code Online (Sandbox Code Playgroud)

我的语法有问题吗?

Mad*_*mer 6

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

比方说,main.java位于某个目录中(为了论证起见,我们只说“path/to/class”),那么当你执行 you 时main.java,图像的路径将变成类似 的东西/path/to/class,这意味着你应该使用 using 之类的东西...

ImageIcon im = new ImageIcon("path/to/class/banner.png"); 
Run Code Online (Sandbox Code Playgroud)

这还假设图像尚未被 Jar'ed,正如ImageIcon(String)文件系统上文件的路径所期望的那样。

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

ImageIcon im = new ImageIcon(getClass().getResource("/path/to/class/banner.png"));
Run Code Online (Sandbox Code Playgroud)

/path/to/class包住在哪里main.java

无论哪种情况,我都建议您使用它,因为当出现问题时,ImageIO.read这实际上会抛出一个错误,而这往往会默默地失败......IOExceptionImageIcon

查看读取/加载图像以获取更多详细信息