java.lang.NullPointerException错误

时间:2015-10-23 13:42:36

标签: java

我遇到了这段代码的问题:

package shapes;

import java.awt.Graphics2D;
import javax.swing.JFrame;

public class Shapes extends JFrame {

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

private static void doDrawing() {
    Graphics2D g = null;
    // TODO Auto-generated method stub
    Graphics2D g2d = (Graphics2D) g;
     g2d.drawLine(20, 20, 100, 100);
}

}

但是,当我运行它时,我得到:

Exception in thread "main" java.lang.NullPointerException
at shapes.Shapes.doDrawing(Shapes.java:17)
at shapes.Shapes.main(Shapes.java:10)

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您将g设置为null

Graphics2D g = null;

然后将此null转换为g2d

Graphics2D g2d = (Graphics2D) g;

然后调用null对象实例的方法。

答案 1 :(得分:0)

您正在尝试访问null元素:

Graphics2D g = null;

然后你试图做这样的事情:

Graphics2D g2d = (Graphics2D) null;

这就是你获得NullPointerException的原因。

我不是真正进入Graphics课程,但是,根据文档中的example,我制作了此代码

import java.awt.*;
import java.applet.Applet;
import java.awt.geom.Rectangle2D;
import javax.swing.*;

public class Shapes extends JApplet {
    public static void main(String[] args) {
        JApplet app = new Shapes();
        JFrame f = new JFrame("Example");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        app.init();
        app.start();
        f.add("Center", app);
        f.pack();
        f.setVisible(true);
    }

    Shapes() {
    }

    public void paint(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.drawLine(20, 20, 100, 100);
    }
}

它绘制了您在代码中提供的行。

我希望它有所帮助