“线程中的异常”;“主要”;适用于初学者的java.lang.NullPointerException

“线程中的异常”;“主要”;适用于初学者的java.lang.NullPointerException,java,Java,我知道这已经被告知很多次了,但我已经用java编程3周了,我只是在做一些有趣的东西。人们所做的其他大多数报告都没有解决我的问题。屏幕显示但不显示rect。这是我的密码: import java.awt.Rectangle; import javax.swing.JFrame; import java.awt.Color; public class something { public static int SCREEN_WIDTH = 500; public static in

我知道这已经被告知很多次了,但我已经用java编程3周了,我只是在做一些有趣的东西。人们所做的其他大多数报告都没有解决我的问题。屏幕显示但不显示rect。这是我的密码:

import java.awt.Rectangle;
import javax.swing.JFrame;
import java.awt.Color;

public class something {
    public static int SCREEN_WIDTH = 500;
    public static int SCREEN_HEIGHT = 500;
    public static int Y = 10;
    public static int X = 10;
    public static int Width = 50;
    public static int Height = 50;
    public static Color player_color = Color.black;
    public static Graphics g;

    public static void screen() {
        JFrame screen = new JFrame();
        screen.setVisible(true);
        screen.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
        screen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        screen.setTitle("test");
        screen.setResizable(false);
    }

    public static void player() {
        Rectangle r = new Rectangle(Y, X, Width, Height);
        g.fillRect((int)r.getX(), (int)r.getY(), (int)r.getWidth(), (int)r.getHeight());
        g.setColor(player_color);
    }

    public static void main(String[] args) {
        screen();
        player();
    }
}

顺便说一下,我正在使用Eclipse,我想问题是我正在使用一个空值的值?如果我错了,请纠正我。

您的g为null且未初始化为任何值,因此您在访问fillRect()方法时将获得null指针

您只需在类级别使用extends Applet并重写paint method()


g
null
。不要让所有的
都是静态的
。因为图形类是一个抽象基类,不能直接实例化。实例通常由组件创建,并作为组件的update()和paint()方法的参数传递给程序。我认为您需要先创建画布,然后才能在其中绘制矩形Canvas c=新画布();g=c.getGraphics()```
public class something extends Applet {
    public static int SCREEN_WIDTH = 500;
    public static int SCREEN_HEIGHT = 500;
    public static int Y = 10;
    public static int X = 10;
    public static int Width = 50;
    public static int Height = 50;
    public static Color player_color = Color.black;

    @Override
    public void paint(Graphics g) {
        JFrame screen = new JFrame();
        screen.setVisible(true);
        screen.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
        screen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        screen.setTitle("test");
        screen.setResizable(false);
        Rectangle r = new Rectangle(Y, X, Width, Height);
        g.fillRect((int) r.getX(), (int) r.getY(), (int) r.getWidth(), (int) r.getHeight());
        g.setColor(player_color);
    }