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

时间:2017-12-31 11:47:06

标签: java arrays graphics

所以这是我的代码:

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)


这是唯一的红色错误,我不知道它出现的原因。我前几天尝试运行没有数组的代码而且它工作正常,我相信这可能是问题所在。

1 个答案:

答案 0 :(得分:0)

我猜第18行是你打电话的地方

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

您忘了启动Rectangle类。创建数组后

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

你需要写

<ImageView
    android:id="@+id/imgVisitedUserImageId"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="4"
    android:contentDescription="@string/cover_image"
    android:scaleType="fitXY"
    android:src="@drawable/unknown" />