getImage()/drawImage() 使Java-小程序停止工作
getImage()/drawImage() makes Java-Applet stop working
我正在使用 JApplet 制作 2D Java 游戏。对于图形,我显然分别使用 Graphics
Graphics2D
。我的问题:我想在我的 paintComponent(Graphics g)
方法中显示图像。图片与 HTML5-File(Applet 在其中实现)和 class 文件位于同一目录中。没有下面的代码片段,小程序工作正常(除了没有图像,很明显)。但是一旦我将它添加到 class,Applet 就不会启动(在浏览器中!)。它不会显示任何东西,我也没有得到异常。
代码:
Graphics2D gg = (Graphics2D) g;
Image img = getImage(getDocumentBase(), "img.PNG");
gg.drawImage(img, 70, 50, this);
gg.finalize();
请注意,我安装了 Java 版本 8 更新 51,并且我在 Java 控件的白名单上有 HTML5-文件的 URL面板(所以我不会得到安全错误)。我在 Firefox 和 IE 中尝试了小程序。
- 从不 从
paint
或 paintComponent
等绘画方法中读入图像。即使这成功了(不是你的情况),它也会不必要地导致多次重新读取图像并减慢你的程序的感知响应能力——你最不想做的事情。
- 改为一次读取图像并将其存储在变量中。
- 你的问题一定是你没有在正确的地方寻找图像——使用正确的路径。我建议您从 URL 或 InputStream 获取图像作为资源并使用
ImageIO.read(...)
读取它。您将需要找到图像的正确路径,我们很难猜测您当前的问题,但您需要使用相对于 class 文件位置的路径。
- 这个
gg.finalize();
是危险的代码,不应该存在;摆脱这一行。
我正在使用 JApplet 制作 2D Java 游戏。对于图形,我显然分别使用 Graphics
Graphics2D
。我的问题:我想在我的 paintComponent(Graphics g)
方法中显示图像。图片与 HTML5-File(Applet 在其中实现)和 class 文件位于同一目录中。没有下面的代码片段,小程序工作正常(除了没有图像,很明显)。但是一旦我将它添加到 class,Applet 就不会启动(在浏览器中!)。它不会显示任何东西,我也没有得到异常。
代码:
Graphics2D gg = (Graphics2D) g;
Image img = getImage(getDocumentBase(), "img.PNG");
gg.drawImage(img, 70, 50, this);
gg.finalize();
请注意,我安装了 Java 版本 8 更新 51,并且我在 Java 控件的白名单上有 HTML5-文件的 URL面板(所以我不会得到安全错误)。我在 Firefox 和 IE 中尝试了小程序。
- 从不 从
paint
或paintComponent
等绘画方法中读入图像。即使这成功了(不是你的情况),它也会不必要地导致多次重新读取图像并减慢你的程序的感知响应能力——你最不想做的事情。 - 改为一次读取图像并将其存储在变量中。
- 你的问题一定是你没有在正确的地方寻找图像——使用正确的路径。我建议您从 URL 或 InputStream 获取图像作为资源并使用
ImageIO.read(...)
读取它。您将需要找到图像的正确路径,我们很难猜测您当前的问题,但您需要使用相对于 class 文件位置的路径。 - 这个
gg.finalize();
是危险的代码,不应该存在;摆脱这一行。