Java 为什么我的宇宙飞船没有出现?

Java 为什么我的宇宙飞船没有出现?,java,image,file,io,applet,Java,Image,File,Io,Applet,这对一些人来说是一个非常简单的问题,我只是不明白。(我对Java非常业余) 这是我编写的一些测试代码,用于尝试并解决为什么它在我的另一个项目中不起作用的问题。由于某些原因,当我加载Java小程序时,我的rocketshipstative.png不会显示 这是我的代码: public class Test extends Applet { public Image offScreen; public Graphics d; public BufferedImage roc

这对一些人来说是一个非常简单的问题,我只是不明白。(我对Java非常业余)

这是我编写的一些测试代码,用于尝试并解决为什么它在我的另一个项目中不起作用的问题。由于某些原因,当我加载Java小程序时,我的rocketshipstative.png不会显示

这是我的代码:

public class Test extends Applet {

    public Image offScreen;
    public Graphics d;
    public BufferedImage rocketship;



    public void init() {
        setSize(854, 480);
        offScreen = createImage(854,480);
        d = offScreen.getGraphics();

        try {
            rocketship = ImageIO.read(new File("rocketshipStationary.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void paint(Graphics g) {
        d.clearRect(0, 0, 854, 480);
        d.drawImage(rocketship, 100, 100, this);
        d.drawImage(offScreen, 0, 0, this);
    }
}

您应该得到一个很好的大堆栈跟踪,它描述了发生的情况。底线是“小程序和文件不能很好地配合使用”


相反,可以为图像建立
URL
,并将其用于
ImageIO
,或者在方法中交替使用
URL

会发生什么?控制台上有消息吗?您尚未发布
createImage()
的代码;它是在你的
paint()
方法中的
rocketship
上绘制的吗?1)为什么要编写小程序?如果是由于老师的特殊要求,请参考。2) 为什么是AWT而不是Swing?关于放弃使用AWT组件的许多好理由,请参见上的回答。如果您需要支持较旧的基于AWT的API,请参阅。您是否检查了电子拇指是否正常工作?3)
public Graphics d不存储对
图形
对象的引用。它们通常是暂时的。在10多年的Java开发中,我还没有找到这样做的理由。4)
setSize(854480)小程序的大小是在HTML中设置的,小程序代码不应该试图调整它。我怀疑读取文件是否有效。但即使是这样。。在paint中,您从不向g绘制任何内容,只向自己的成员变量d(从屏幕外)绘制。。