Java 为什么我不能获取image()?

Java 为什么我不能获取image()?,java,swing,nullpointerexception,imageicon,Java,Swing,Nullpointerexception,Imageicon,我在从另一个班级获取图片时遇到了一些问题。我以前从未遇到过这个问题。谁能给我指一下正确的方向吗 package main; import java.awt.Color; import java.awt.DisplayMode; import java.awt.Graphics; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Image; import javax.swi

我在从另一个班级获取图片时遇到了一些问题。我以前从未遇到过这个问题。谁能给我指一下正确的方向吗

package main;

import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.Graphics;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class Main extends JFrame {

    public static Character character;

    static GraphicsEnvironment graphicsEnvironment;
    static GraphicsDevice graphicsDevice;
    static DisplayMode displayMode;

    private Image i;

    public static void main(String[] args) {
        displayMode = new DisplayMode(1280, 720, 16, DisplayMode.REFRESH_RATE_UNKNOWN);
        graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
        graphicsDevice = graphicsEnvironment.getDefaultScreenDevice();

        Main m = new Main();
        m.run();
    }

    public void run() {
        setUndecorated(true);
        setResizable(false);

        graphicsDevice.setFullScreenWindow(this);

        try {
            graphicsDevice.setDisplayMode(displayMode);
        } catch (Exception e) {
        }
    }

    public void paint(Graphics g) {
        g.setColor(Color.cyan);
        g.fillRect(0, 0, displayMode.getWidth(), displayMode.getHeight());
        i = character.getImage();
        g.drawImage(i, 100, 100, this);
    }
}
它表示错误为i=character.getImage


我在制作小程序时已经做过很多次了,如果我第一次尝试全屏游戏的话,记得想想编译器是怎么告诉你的

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
NullPointerException意味着引用变量尚未初始化或为==null。在您的情况下,这意味着要调试它,您必须同时检查i和character。如果是您试图返回的图像,stacktrace会更深一层

既然你在初始化我,回头看看这个角色。您从未将字符设置为任何值,这意味着您不能在任何声明中使用它

所以,你的解决方案是做character=newcharacter;在运行或主字符串[]args中,
或者您可以将getImage设置为static,并说i=Character.getImage

记住要考虑编译器告诉您的内容

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
NullPointerException意味着引用变量尚未初始化或为==null。在您的情况下,这意味着要调试它,您必须同时检查i和character。如果是您试图返回的图像,stacktrace会更深一层

既然你在初始化我,回头看看这个角色。您从未将字符设置为任何值,这意味着您不能在任何声明中使用它

所以,你的解决方案是做character=newcharacter;在运行或主字符串[]args中, 或者您可以将getImage设置为static,并说i=Character.getImage

将方法声明更改为 公共静态映像getImage{/*您的代码在这里*/} 调用该方法的语句确保第一个字母是大写的C而不是C。如Character.getImage中所示 将方法声明更改为 公共静态映像getImage{/*您的代码在这里*/} 调用该方法的语句确保第一个字母是大写的C而不是C。如Character.getImage中所示
很可能资源不存在。我还鼓励您使用ImageIO而不是ImageIcon,因为它在遇到错误时会提供更好的反馈…很可能资源不存在。我还鼓励您使用ImageIO而不是ImageIcon,因为它会在遇到错误时提供更好的反馈。。。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException