web-dev-qa-db-ja.com

アイコン画像をJavaに設定

私は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アイコンを使用するだけです。

9
Shzylo

多くの場合、問題の原因は画像の間違った場所を探すこと、またはクラスと画像がjarファイルにある場合に、ファイルが存在しないファイルを探すことです。 2番目の問題を取り除くためにリソースを使用することをお勧めします。

例えば。、

// 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);

これにはデフォルトのツールキットを使用します

frame.setIconImage(Toolkit.getDefaultToolkit().getImage("Icon.png"));
8
Jayram

私はこれを使用します:

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という画像をリソースフォルダーに配置し、WindowJFrameなどの JDialog ファミリーからクラスを拡張するクラス内のパラメーターとして上記のメソッドを呼び出します。

IconImageUtilities.setIconImage(this);
1
BullyWiiPlaza