10

我一直在到处搜索如何在 Java 中设置图标图像,但它总是最终无法正常工作或给我错误。在这里,在我的主要方法中是我放置代码的地方:

public static void main(String[] args) {
    Game game = new Game();

    // This right here! 
    game.frame.setIconImage(new ImageIcon("/Icon.png").getImage());

    game.frame.setResizable(false);
    game.frame.setTitle(title);
    game.frame.add(game);
    game.frame.pack();
    game.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    game.frame.setLocationRelativeTo(null);
    game.frame.setVisible(true);

}

我的图像路径是“%PROJECT%/res/Image.png”,我只是使用 /Image.png 继续访问我的 res 文件夹(就像我在项目的其他部分所做的那样)我什至已经转换了它放入一个图标文件,并尝试过,但它决定使用默认的 Java 图标。

4

4 回答 4

10

您的问题通常是由于在错误的位置查找图像,或者如果您的类和图像位于 jar 文件中,则查找文件不存在的文件。我建议你使用资源来解决第二个问题。

例如,

// the path must be relative to your *class* files
String imagePath = "res/Image.png";
InputStream imgStream = Game.class.getResourceAsStream(imagePath );
BufferedImage myImg = ImageIO.read(imgStream);
// ImageIcon icon = new ImageIcon(myImg);

// use icon here
game.frame.setIconImage(myImg);
于 2013-06-29T19:29:40.877 回答
8

为此使用默认工具包

frame.setIconImage(Toolkit.getDefaultToolkit().getImage("Icon.png"));
于 2013-06-29T19:22:47.347 回答
1

我用这个:

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;

public class IconImageUtilities
{
    public static void setIconImage(Window window)
    {
        try
        {
            InputStream imageInputStream = window.getClass().getResourceAsStream("/Icon.png");
            BufferedImage bufferedImage = ImageIO.read(imageInputStream);
            window.setIconImage(bufferedImage);
        } catch (IOException exception)
        {
            exception.printStackTrace();
        }
    }
}

只需将调用的图像Icon.png放在资源文件夹中,然后在扩展家族类的类中调用上述方法,并将其自身作为参数,Window例如JFrameor JDialog

IconImageUtilities.setIconImage(this);
于 2016-01-20T18:52:12.033 回答
0

以下方法适用于 Java 7 及更高版本。

JFrame frame = new JFrame("MyAPP");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
    frame.setIconImage(ImageIO.read(YourClass.class.getResourceAsStream("/icon.png")));
} catch (IOException ex) {
    ex.printStackTrace();
}
frame.setVisible(true);

将您的icon.png图像文件存放到/src/main/resources.

于 2021-03-04T05:49:24.680 回答