getImage()/ drawImage()使Java-Applet停止工作

时间:2015-07-22 18:46:00

标签: java swing applet graphics2d japplet

我正在使用JApplet制作2D Java游戏。对于图形我显然分别使用Graphics Graphics2D。我的问题:我想在我的paintComponent(Graphics g)方法中显示图像。该图片与HTML5-File(实现Applet)和类文件位于同一目录中。如果没有以下代码片段,applet工作正常(显然除了没有图像)。但是一旦我将它添加到课堂中,Applet就无法启动(在浏览器中!)。它不会显示任何内容,我也不会例外。

代码:

Graphics2D gg = (Graphics2D) g;
Image img = getImage(getDocumentBase(), "img.PNG");
gg.drawImage(img, 70, 50, this);
gg.finalize();

请注意我安装了Java Version 8 Update 51,并且我在Java控制面板中的白名单上有HTML5-File的URL(所以我没有得到安全错误)。我在Firefox和IE中试过了applet。

1 个答案:

答案 0 :(得分:2)

  1. 从不paintpaintComponent等绘画方法中读取图片。即使这是成功的(它不在你的情况下),它将不必要地导致多次重读图像并减慢你的程序的感知响应速度 - 你想要的最后一件事做。
  2. 而是一次性读取图像并将其存储在变量中。
  3. 您的问题必须是您没有在正确的位置寻找图像 - 使用正确的路径。我建议您从URL或InputStream获取图像作为资源,并使用ImageIO.read(...)读取它。您需要找到图像的正确路径,鉴于您当前的问题,我们难以猜测,但是您需要使用相对于类文件位置的路径。
  4. 这个gg.finalize();是危险的代码,不应该存在;摆脱这条线。