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

Java图像在使用非常小的代码时不会绘制到屏幕上,java,user-interface,jframe,jpanel,Java,User Interface,Jframe,Jpanel,根据我正在编写的另一个程序中的一个问题,我做了一个小测试。 我需要在屏幕上画一个图像,但它不工作。 然而,我能在屏幕上画矩形,我不懂 代码: 主要类别: package test; import javax.swing.JFrame; public class Main extends JFrame{ private static final long serialVersionUID = 1L; final static int WW = 800; final sta

根据我正在编写的另一个程序中的一个问题,我做了一个小测试。 我需要在屏幕上画一个图像,但它不工作。 然而,我能在屏幕上画矩形,我不懂

代码:

主要类别:

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();
    }
}
testClass类:

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
具有类范围。因此,您试图在
paintComponent
中绘制的图像与您在构造函数中加载的图像不同


不过,修复这一问题并不足以让它发挥作用。我建议做以下几点。使用
图像
。然后,在构造函数中,使用
image=ImageIO.read(新文件(“spaceship.png”))分配它

spaceship.png存储在哪里?在我的java项目地图(我使用eclipse)中,在
src
下,或者紧靠项目下?在我的项目名文件夹中,所以不在src文件夹中(我必须将它移到那里吗?),在进行任何自定义绘制之前,请调用super.paintComponent。将此作为ImageObserver传递给drawImage