将图标插入Java Swing JFrame

时间:2019-12-03 13:40:23

标签: java swing

我在这里检查了许多以前关于stackoverflow的问题,但是没有一个问题可以解决我遇到的问题。 我必须“简单地”在我的JFrame中插入一个图标,我试图这样做(来自另一个stackoverflow问题):

// ico file is in the same folder
ImageIcon frameIcon = new ImageIcon("/iconqm16.ico");
jFrame1.setIconImage(frameIcon.getImage());

但这没用。在此之后,我尝试了以下操作:

URL iconURL = getClass().getResource("/iconqm(20x20).png");
ImageIcon icon = new ImageIcon(iconURL);
jFrame1.setIconImage(icon.getImage());

这次我使用.png是因为我读到.ico是Windows特定的。我使用了类资源,因为它可以打包在jar中。 但是我的图标还没有出现。有人可以在这些摘要中找到任何错误吗?也许是图像尺寸的问题?我尝试了16x16、20x20、32x32,但均无效果。

编辑

我发现了问题所在。在下面尝试了此代码,即使路径正确,我的程序也找不到文件。在编辑问题之前,我已经对其进行了仔细检查,您能否帮助我理解为什么找不到图片文件?

URL url = getClass().getResource("C:/Users/Sergio/Documents/NetBeansProjects/Queue Manager v1.0/icon/icon16px.png");
    if (url == null) {
        System.out.println("Could not find image!");
    } else {
        jFrame1.setIconImage(new ImageIcon(url).getImage());
    }
}

编辑 这终于奏效了,但老实说,我不知道getClass().getResource(pathToFile)为何不奏效的原因。使用了此解决方案:

try {
    // Set Frame's Icon
    BufferedImage img = ImageIO.read(new File("C:\\Users\\Sergio\\Documents\\NetBeansProjects\\Queue Manager v1.0\\icon\\icon16px.png"));
    this.setIconImage(img);
} catch (IOException ex) {
    Logger.getLogger(QueueManagerForm.class.getName()).log(Level.SEVERE, null, ex);
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以改用以下嵌入式链接的代码: How to show image in JFrame

感谢@Levenal的答案。