你如何停止"绘画"?

时间:2015-11-22 14:26:06

标签: java loops jframe geometry

我正在处理一段代码,这些代码会随机地在我的游戏屏幕上放置圆圈(简单地说)。我在代码中没有错误,但我遇到了一个问题,它想要编写更多的绘制代码,但我想输入更多,这里是代码。我正在使用JFrame

    public class Game extends JPanel{
        public static final long serialVersionUID = 2L; 
        public static Random random;
        public void paintComponent(Graphics g){
            super.paintComponent(g);
            this.setBackground(Color.BLACK);
            Dimension ScreenSize = Toolkit.getDefaultToolkit().getScreenSize();
            int width = (int) ScreenSize.getWidth();
            int height = (int) ScreenSize.getHeight();
            for(int i=1; i<12; i++){
            int rw = random.nextInt(width);
            int rh = random.nextInt(height);
            int radius = random.nextInt(50);
            g.setColor(Color.gray);
            g.fillOval(rw, rh, radius+50, radius+50);
       }

` 错误代码就像这样出现

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Game.paintComponent(Game.java:18)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)

简单地说,我做错了什么以及如何解决它?

1 个答案:

答案 0 :(得分:1)

您在不初始化的情况下使用随机变量:

Random random;

应该是

Random random = new Random();

更重要的是,您需要学习如何调试NPE(NullPointerException)的一般概念。 你应该批判性地阅读你的异常堆栈跟踪以找到错误的代码行,抛出异常的行,然后仔细检查该行,找出哪个变量为null,然后追溯到你的代码,看看为什么。你会一次又一次地碰到这些,相信我。

同样在将来,请努力提出更完整的问题,包括任何和所有错误消息,并包括指示哪一行抛出异常。这将极大地降低挫折程度。