【问题标题】:Load images on an applet HTML在小程序 HTML 上加载图像
【发布时间】:2012-12-02 01:14:39
【问题描述】:

我正在尝试制作一个仅在屏幕上随机呈现 4 张图像的简单游戏,但我想将它放在 HTML 上的网站上。当我在 Eclipse 上测试时它工作得很好,但是当我把它放在一个 html 上并将它上传到网站时它告诉我:访问被拒绝(“java.io.FilePermission”“Sheet.png”“read”),我知道我必须把 getResourceAsStream("Sheet.png");

但它不起作用请帮助!

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.util.Random;
import javax.imageio.ImageIO;

public class Game extends Canvas implements Runnable{

public BufferedImage icons = null;
public BufferedImage wall = null;
public Random r = new Random();
public boolean running;
private InputStream input;

public Game(){

    setBackground(Color.white);
    setSize(640, 320);

    input = Game.class.getResourceAsStream("Sheet.png");

    start();
    this.setSize(new Dimension(640, 320));

    try {
        icons = ImageIO.read(input);
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }

    wall = icons.getSubimage(0, 0, 16, 16);
}

public static void main(String args[]){
    new Apple().init();
}

public void start(){
    running = true;
    new Thread(this).start();
}
public void stop(){
    running = false;
}

public void run() {
    while(running){
        try {
            new Thread().sleep(200);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        repaint();
    }
}
    int rendered;
public void paint(Graphics g){
    g.drawImage(wall, r.nextInt(600), r.nextInt(280),null);
    g.drawImage(wall, r.nextInt(600), r.nextInt(280),null);
    g.drawImage(wall, r.nextInt(600), r.nextInt(280),null);
    g.drawImage(wall, r.nextInt(600), r.nextInt(280),null);
    rendered++;
    g.drawString("Rendered: "+rendered, 0, 290);
}
}

小程序类:

import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JApplet;

public class Apple extends JApplet{

public void init(){
    this.start();
    this.setBackground(Color.WHITE);
    this.setEnabled(true);
    this.setMinimumSize(new Dimension(640, 320));
    this.setMaximumSize(new Dimension(640, 320));
    this.setSize(new Dimension(640, 320));
    this.add(new Game());
}

}

HTML:

<html><body>
<p>
<applet code="Apple.class" archive="Applet.jar"
width="640" height="320"></applet>
</p>
</body></html>

【问题讨论】:

  • 1) “当我把它放在一个html上并上传到网站上” 我们可以访问小程序的URL是什么? 2) width="640" height="320" 在 HTML 中很好,但删除所有其他对设置大小的引用 - 它们是不必要的,也没什么帮助。 3) 不要在init() 方法中调用start()。这些方法只能由 JVM 调用。 4) 不要无故混用 Swing 和 AWT 组件,在这种情况下,请将 Canvas 替换为 JPanel。 5) 将System.out.println(e.getMessage()); 替换为e.printStackTrace() 6) g.drawImage(wall,..nextInt(280),this);
  • 我改变了你告诉我的一切,但它仍然告诉我同样的错误,但在 Eclipse 中它工作正常。网址是:dl.dropbox.com/u/53271378/Applet/untitled%20text.html

标签: java html eclipse image applet


【解决方案1】:

我有一些“坏消息”要告诉你。小程序在这里工作得很好。

这表明您看到的问题是缓存旧类的结果。确保 Java Console 已打开并在重新加载页面之前刷新缓存。

【讨论】:

  • 哇,非常感谢,如果我遇到更多问题,希望我有更多“坏消息”,非常感谢:)
猜你喜欢
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 2011-02-03
  • 2013-05-07
相关资源
最近更新 更多