フレームの背景としてバッファリングされた画像を使用したいと考えています。私は、mouselistener を使用して、マウスが特定の領域上を移動してボタンを強調表示し、その上に画像 (newgame.jpg または loadgame.jpg) を描画したことを検出します。ecplise で実行するとすべて正常に動作しますが、Jar ファイルを作成するとバックグラウンドが読み込まれません。これはコードです:
in the constructor:
try {
background = ImageIO.read(this.getClass().getResource("Images/SMAGE_achtergrond.jpg"));
newgame = ImageIO.read(this.getClass().getResource("Images/newgame.jpg"));
loadgame = ImageIO.read(this.getClass().getResource("Images/loadgame.jpg"));
} catch(Exception e){
e.printStackTrace();
}
....
...
the next method is being called every 10ms (increasing it to 1 second 5 seconds doesn't make it work)
public void refresh()
{
BufferedImage temp = new BufferedImage(800,400,BufferedImage.TYPE_INT_ARGB);
Graphics g2 = temp.getGraphics();
g2.drawImage(background,0,0,null);
if (newGame){
g2.drawImage(newgame,36,282,null);
}
if (loadGame)
{
g2.drawImage(loadgame, 37, 327, null);
}
Graphics g = panel.getGraphics();
g.drawImage(temp,0,0,null);
}
refresh() を繰り返し呼び出すスレッドがあります。ここで奇妙な部分があります: newGame/loadgame が true の場合、g2.drawImage(newgame/loadgame,36,282,null); 正しく実行されます。ただし、メソッドの残りの部分は常に無視されます。すべての画像へのパスは同じで、すべて同じ場所にあるため、問題はありません。
そして、それをjarファイルに入れた場合にのみ機能しません。
私もこれを使用しようとしました:
background = Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("Images/SMAGE_achtergrond.jpg"));
newgame = Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("Images/newgame.jpg"));
loadgame = Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("Images/loadgame.jpg"));
しかし、それは何も変わりません。ここで何が問題なのか誰かが教えてくれることを願っています。ありがとうございました!