Java 绘制矩形2D数组时出现空指针异常

Java 绘制矩形2D数组时出现空指针异常,java,nullpointerexception,drawrectangle,Java,Nullpointerexception,Drawrectangle,我一直在尝试制作一个矩形数组来形成游戏网格,由于某种原因,当矩形应该被绘制时,我得到了几个空指针异常。我不确定这是否与我设置x、y坐标、宽度、高度或其他完全不同的方式有关。通过我的测试,似乎与此无关,但我可能错了 public class NewClass extends Frame { Rectangle2D[][] rectangelMatrix = new Rectangle[4][5]; int width = 25; int height = 25;

我一直在尝试制作一个矩形数组来形成游戏网格,由于某种原因,当矩形应该被绘制时,我得到了几个空指针异常。我不确定这是否与我设置x、y坐标、宽度、高度或其他完全不同的方式有关。通过我的测试,似乎与此无关,但我可能错了

public class NewClass extends Frame {

    Rectangle2D[][] rectangelMatrix = new Rectangle[4][5];
    int width = 25;
    int height = 25;
    int x = 0;
    int y = 0;

    public NewClass() {
        setSize(1000, 1000);
    }

    public void arraysi() {
        for (int i = 0; i < rectangelMatrix.length; i++) {
            y = y + height;
            for (int j = 0; j < rectangelMatrix[i].length; j++) {
                x = x + width;
                rectangelMatrix[i][j] = new Rectangle(x, y, width, height);

            }
        }
    }

    public void paint(Graphics g) {
        System.out.println("hi");
        Graphics2D g2d = (Graphics2D) g;
        for (int i = 0; i < rectangelMatrix.length; i++) {
            for (int j = 0; j < rectangelMatrix[i].length; j++) {
                // EXCEPTION THROWN FROM LINE BELOW
                g2d.draw(rectangelMatrix[i][j]);
            }
        }
    }

    public void coolios() {
        repaint();
    }
}
编辑:这是日志-

exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.awt.geom.Path2D$Float.<init>(Path2D.java:215)
at java.awt.geom.Path2D$Float.<init>(Path2D.java:190)
at sun.java2d.windows.GDIRenderer.doShape(GDIRenderer.java:204)
at sun.java2d.windows.GDIRenderer.draw(GDIRenderer.java:236)
at sun.java2d.pipe.ValidatePipe.draw(ValidatePipe.java:136)
at sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2336)
at NewClass.paint(NewClass.java:64)
at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
at sun.awt.RepaintArea.paint(RepaintArea.java:224)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:310)
at sun.awt.windows.WWindowPeer.handleEvent(WWindowPeer.java:695)
at java.awt.Component.dispatchEventImpl(Component.java:4706)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常 位于java.awt.geom.Path2D$Float。(Path2D.java:215) 位于java.awt.geom.Path2D$Float。(Path2D.java:190) 位于sun.java2d.windows.gdirender.doShape(gdirender.java:204) 位于sun.java2d.windows.gdirender.draw(gdirender.java:236) 位于sun.java2d.pipe.validatePie.draw(validatePie.java:136) 位于sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2336) 位于NewClass.paint(NewClass.java:64) 位于sun.awt.repaintrea.paintComponent(repaintrea.java:248) 位于sun.awt.repaintrea.paint(repaintrea.java:224) 位于sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:310) 位于sun.awt.windows.WWindowPeer.handleEvent(WWindowPeer.java:695) 位于java.awt.Component.dispatchEventImpl(Component.java:4706) 位于java.awt.Container.dispatchEventImpl(Container.java:2099) 位于java.awt.Window.dispatchEventImpl(Window.java:2478) 位于java.awt.Component.dispatchEvent(Component.java:4460) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:599) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:184) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:174) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 在java.awt.EventDispatchThread.run处(EventDispatchThread.java:122)
我不确定,但试着让i和j都从1开始?
可以。我想你应该打电话给我

super.paint(g);

从绘制方法开始。

我测试了框架类,如下所示,它毫无例外地工作:

public static void main(String[] args) {
        NewClass frame = new NewClass();
        frame.setVisible(true);
        frame.arraysi();
        frame.coolios();
}
我建议您改用Swing JFrame,但不要使用SWT Frame。
最好将矩形图形放在面板中,然后将面板添加到框架中。

好,引发nullpointerexception的地方在哪里?首先格式化您的帖子,因为有太多的空白。您的Graphics g参数似乎为null…@XSen是的,我刚刚注意到,但我不确定在这种情况下如何调用paint方法,因为在Java中,我并没有真正向GArray发送任何从零开始的索引。
public static void main(String[] args) {
        NewClass frame = new NewClass();
        frame.setVisible(true);
        frame.arraysi();
        frame.coolios();
}