Java-使用非常小的代码时图像不会绘制到屏幕上

Java-Image does not draw to screen while using a very small code

我根据自己正在编写的另一个程序中的一个问题做了一个小测试。 我需要在屏幕上绘制图像,但它不起作用。 但是,我可以在屏幕上绘制矩形,我不明白

代码:

主要class:

package test;
import javax.swing.JFrame;

public class Main extends JFrame{
    private static final long serialVersionUID = 1L;
    final static int WW = 800;
    final static int WH = 600;
    public Main(){
        setSize(WW,WH);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setTitle("Space Game");
        add(new testClass());
        setVisible(true);
    }
    public static void main(String[] args) {
        new Main();
    }
}

测试类class:

package test;
import java.awt.*;

import javax.swing.*;

public class testClass extends JPanel{
    private Image image;
    public testClass(){
        ImageIcon image = new ImageIcon("spaceship.png");
    }
    public void paintComponent(Graphics g){
        g.setColor(Color.BLACK);
        g.fillRect(50,50,50,50);
        g.drawImage(image,0,0,null);
    }
}

请帮助并解释为什么它不起作用。 对不起英语不好,任何帮助都很感激:) *如果我的问题是新手,我很抱歉,我是编程新手...

您的代码中存在一个重大错误: ImageIcon image 具有方法作用域,而 Image image 具有 class 作用域。因此,您尝试在 paintComponent 中绘制的图像与您在构造函数中加载的图像不同。

修复该问题还不足以使其正常工作。我建议做的是以下内容。使用 Image。然后,在构造函数中,使用 image = ImageIO.read(new File("spaceship.png"));

对其进行分配