尝试在 Java 中显示带有数组作为参数的矩形时出错



这是我的代码:

import javax.swing.*;
import java.awt.*;
public class ShapeTest extends JFrame{
     public ShapeTest(){
          setSize(600,600);
          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          setLocationRelativeTo(null);
          setVisible(true);
     }
     public static void main(String a[]){
         new ShapeTest();
     }
     public void paint(Graphics g){
          Rectangle[][] v = new Rectangle[200][200];
          v[1][1].x=0;
          v[1][1].y=0;
          v[1][1].width=50;
          v[1][1].height=50;
          int y1=50;
          for(int i=1; i<=7; i++){
              int cont=50;
              for(int j=1; j<=7; j++){
                  v[i][j].x+=cont;
                  v[i][j].y=y1;
                  cont+=70;
              }
              y1+=70;
          }
          for(int i=1; i<=7; i++){
              for(int j=1; j<=7; j++){
                  g.drawRect(v[i][j].x, v[i][j].y, v[i][j].width, v[i][j].height);
                  g.setColor(Color.yellow);
                  g.fillRect(v[i][j].x, v[i][j].y, v[i][j].width, v[i][j].height);
              }
          }
          }
    }

这是子类:

public class Rectangle{
    public int x;
    public int y;
    public int width;
    public int height;
}

当我运行代码时,没有显示矩形,但我在文本框中收到一堆错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at ShapeTest.paint(ShapeTest.java:18)


这是唯一的红色错误,我不知道为什么会出现它。前几天我尝试在没有数组的情况下运行代码并且它有效,所以我相信这可能是问题所在。

我想第

18 行是你打电话的地方

v[1][1].x=0;

您忘了启动矩形类。创建阵列后

Rectangle[][] v = new Rectangle[200][200];

你需要写

for(int i=0;i<200;i++) {
    for(int j=0;j<200;j++) {
        v[i][j] = new Rectangle();
    }
}

相关内容

  • 没有找到相关文章

最新更新