为什么我的椭圆不能打印到JFrame?

时间:2016-02-15 02:23:39

标签: java

每当我运行这个时,我都会收到错误:

  

“anime.re.main(re.java:12)中的anime.re.drawShape(re.java:17)中的线程”main“java.lang.NullPointerException中的异常”

我没有传递空引用,问题是什么?

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

public class re {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setSize(400, 400);
        Graphics g = frame.getGraphics();
        drawShape(g);
        frame.setVisible(true);
    }

    public static void drawShape(Graphics g) {
        g.drawOval(0, 0, 100, 100);

    }
}

1 个答案:

答案 0 :(得分:1)

使用Graphics2D的paint方法而不是自己创建方法。此外,您的空指针异常来自于在设置jpanel或使jframe可见之前尝试绘制。

public class example extends JPanel{

public static void main(String[] args){
    JFrame frame = new JFrame("Example");
    example main = new example();
    int miliSecs = 25;

    frame.add(main);

    frame.setSize(640, 480);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    frame.repaint();//here is the call to the paint method
}
    public void paint ( Graphics g ){
    //paints the screen
    g.setColor(Color.BLACK);
    g.fillRect(0,0,640,480);
    }
}

这样,您还可以使用update()方法调用每个帧清除屏幕以及paint()方法。