我想使用缓冲图像作为框架的背景。我使用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"));
但它没有改变任何东西。 我希望有人能告诉我这里出了什么问题。 谢谢!