創建Box對象時發生錯誤。爲什麼在創建Swing組件時收到NullPointerException?
public void drawBoard(Board board){
for(int row = 0; row < 8; row++){
for(int col = 0; col < 8; col++){
Box box = new Box(board.getSquare(col, row).getColour(), col, row);
squarePanel[col][row].add(box);
}
}
局從遊戲構造這裏(其他類)給出:
public Game() throws Throwable{
View graphics = new View();
board = new Board();
board.setDefault();
graphics.drawBoard(board);
}
董事會構造是這樣的:
public Board(){
grid = new Square[COLUMNS][ROWS];
for(int row = 0; row < 8; row++){
for(int col = 0; col < 8; col++){
grid[col][row] = new Square(this);
}
}
for(int row = 0; row < 8; row++){
for(int col = 0; col < 4; col++){
int odd = 2*col + 1;
int even = 2*col;
getSquare(odd, row).setColour(Color.BLACK);
getSquare(even, row).setColour(Color.WHITE);
}
}
}
最後Box類:
class Box extends JComponent{
Color boxColour;
int col, row;
public Box(Color boxColour, int col, int row){
this.boxColour = boxColour;
this.col = col;
this.row = row;
repaint();
}
public void paint(Graphics drawBox){
drawBox.setColor(boxColour);
drawBox.drawRect(50*col, 50*row, 50, 50);
drawBox.fillRect(50*col, 50*row, 50, 50);
}
}
因此, e遍歷數組,它使用兩個整數作爲座標來創建Box。 引用座標,然後運行repaint()。 這個盒子也從Board類中的Square中獲得使用這兩個整數的顏色。 由於顏色已經設置好,所以在drawBoard(板)方法運行之前,這應該不成問題,對吧?
Exception in thread "main" java.lang.NullPointerException
at View.drawBoard(View.java:38)
at Game.<init>(Game.java:21)
at Game.main(Game.java:14)
的Square
import java.awt.Color;
public class Square {
private Piece piece;
private Board board;
private Color squareColour;
public Square(Board board){
this.board = board;
}
public void setColour(Color squareColour){
this.squareColour = squareColour;
}
public Color getColour(){
return squareColour;
}
你能提供的堆棧跟蹤與NullPointerException異常的它? – 2011-01-12 13:40:12
不知道,是在控制檯中的錯誤? – 2011-01-12 13:44:22
@Alex,是的,啓動「java.lang.NullPointerException」並且有一堆行號的東西 - 所有這些。 – justkt 2011-01-12 13:46:18