私は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アイコンを使用するだけです。
多くの場合、問題の原因は画像の間違った場所を探すこと、またはクラスと画像が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"));
私はこれを使用します:
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
やJFrame
などの JDialog
ファミリーからクラスを拡張するクラス内のパラメーターとして上記のメソッドを呼び出します。
IconImageUtilities.setIconImage(this);