Ok。したがって、2D配列を次のように宣言します。
private JPanel[][] panels = new JPanel[10][8];
それから私はそれを次のように記入します:
GridBagConstraints c = new GridBagConstraints();
for(int i = 0; i < 8; i++){
for(int j = 0; j < 10; j++){
JPanel temp = new JPanel();
if(rand.nextInt(10)+1 > 8 && (j != 0 && i != 0)){
temp.setBackground(Color.BLACK);
temp.setName("wall");
}else{
temp.setBackground(Color.WHITE);
temp.setName("space");
}
c.gridx = j;
c.gridy = i;
boardCotent.add(temp,c);
panels[j][i] = temp;
}
}
}
それでは、正しく入力されていることを確認するために出力しますか?
for(int i = 0; i < 8; i++){
for(int j = 0; j < 10; j++){
System.out.println(j + ":" + i + " -> " + panels[j][i].getName());
}
}
上記のforループからの出力のサンプルを次に示します。
2:2 -> wall
3:2 -> null
4:2 -> null
5:2 -> wall
明らかに、それは機能しました...
次に、スイッチで、それが「壁」か「スペース」かを確認するためにアクセスしようとしていますが、nullポインター例外が発生します...ここに欠陥がありますか?
if(y > 0 && !panels[x][y-1].getName().matches("wall")){
y--;
}