Причина, по которой я спрашиваю, в том, что я получаю исключение NullPointerException.Я сейчас это очень легко, но я довольно новое программирование и нахожу это немного запутанным.Допустим, я инициализировал объект в классе и хочу получить доступ к тому же объекту из другого класса.
Как, например, сейчас я работаю над небольшой игрой в шахматы, в моей модели класса Game у меня есть экземплярдоски, объект.Доска, в свою очередь, имеет массив квадратов.Квадрат [] [].
В игре есть доска, у доски есть Квадрат [] [].
Теперь, если я хочу получить доступ к Квадрату [] [] через игровое поле (в игре)типа платы.Должен ли я просто объявить переменную с тем же именем и типом, или мне нужно заново ее инициализировать?
Board board ИЛИ Board board = new Board ();
Примечание. Я уже инициализировандоска в классе Game, так что, если я сделаю это снова, не будут ли они двумя совершенно разными объектами Board?
Класс, который ссылается на «доску»:
public class View extends JFrame {
Board board;
JFrame gameWindow = new JFrame("Chess");
JPanel gamePanel = new JPanel();
JPanel[][] boardPanel = new JPanel[8][8];
JMenuBar gameMenu = new JMenuBar();
JButton newGame = new JButton("New game");
JButton pauseGame = new JButton("Pause");
JButton actionLog = new JButton("Action log");
View(){
gameWindow.setDefaultCloseOperation(EXIT_ON_CLOSE);
gameWindow.setSize(400, 400);
gameWindow.getContentPane().add(gamePanel);
gameWindow.setVisible(true);
gamePanel.setVisible(true);
gameMenu.add(newGame);
gameMenu.add(pauseGame);
gameMenu.add(actionLog);
for(JPanel[] row : boardPanel){
for(JPanel box : row){
gamePanel.add(box);
}
}
}
public void drawBoard(){
for(int y = 0; y < 8; y++){
for(int x = 0; x < 8; x++){
Box box = new Box();
box.setColour(board.getSquare(x, y).getColour());
box.setCol(x);
box.setRow(y);
box.repaint();
boardPanel[x][y].add(box);
}
}
}
}
class Box extends JComponent{
JPanel[][] boardPanel;
Board board;
Color boxColour;
int col, row;
public Box(){
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);
}
public void setColour(Color boxColour){
this.boxColour = boxColour;
}
public void setCol(int col){
this.col = col;
}
public void setRow(int row){
this.row = row;
}
}
... и класс, который создает экземпляр "board":
public class Game {
@SuppressWarnings("unused")
public static void main(String[] args)
throws Throwable{
Board board = new Board();
View view = new View();
}
}
Исключение происходит здесь:
for(JPanel[] row : boardPanel){
for(JPanel box : row){
gamePanel.add(box);
}
}