所以这是我的代码:
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)
这是唯一的红色错误,我不知道它出现的原因。我前几天尝试运行没有数组的代码而且它工作正常,我相信这可能是问题所在。
答案 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" />