这是我的代码:
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();
}
}