什么原因导致"NullPointerException"错误,我该如何解决?

-1 java nullpointerexception

我试图制作一个简单的应用程序只是为了试验Java图形,但我遇到了这个错误,所以如果有人可以帮助我,我真的很感激.:)

我得到以下内容

 Exception in thread "main" java.lang.NullPointerException
at Main.draw(Main.java:41)
at Main.createGUI(Main.java:36)
at Main.main(Main.java:20)
 Java Result: 1
Run Code Online (Sandbox Code Playgroud)

我尝试运行以下代码时出错:

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class Main extends JFrame {
private static final long serialVersionUID = 1L;

public JPanel panel;

public static void main(String[] args) {

    Main m = new Main();
    m.setSize(500, 700);
    m.setDefaultCloseOperation(EXIT_ON_CLOSE);
    m.createGUI();
    m.setVisible(true);




}
private void createGUI() {
    Container window = getContentPane();

    panel = new JPanel();
    panel.setPreferredSize(new Dimension(500, 700));
    panel.setBackground(Color.WHITE);
    window.add(panel);

    Graphics paper = panel.getGraphics();
    draw(paper);

}

private void draw(Graphics g){
    g.drawRect(100, 100, 100, 100);
}
}
Run Code Online (Sandbox Code Playgroud)

有人能告诉我如何解决这个问题以及错误的原因是什么?

谢谢!

Rei*_*eus 7

Graphics这一行上的对象

g.drawRect(100, 100, 100, 100);
Run Code Online (Sandbox Code Playgroud)

null因为你已经使用JComponent#getGraphics 之前的 UI是可见的.这就是为什么它始终是最好通过重写做风俗画的paintComponent(图形)JPanel panel.这将保证Graphics Object在使用之前首先初始化.