【问题标题】:getImage()/drawImage() makes Java-Applet stop workinggetImage()/drawImage() 使 Java-Applet 停止工作
【发布时间】:2015-07-22 18:46:00
【问题描述】:

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

代码:

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

请注意,我已安装 Java 版本 8 Update 51,并且我在 Java 控制面板的白名单中拥有 HTML5 文件的 URL(因此我不会收到安全错误)。我在 Firefox 和 IE 中尝试了这个小程序。

【问题讨论】:

    标签: java swing applet graphics2d japplet


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 2013-02-09
      • 2018-10-17
      相关资源
      最近更新 更多