我有一些類創建一個Ship(類Ship擴展GameObject)並嘗試將它添加到gameBoard。
要做到這一點,它告訴gameFrame添加的對象如下:java空指針異常傳遞對象
public void startNewGame() {
Ship myShip = new Ship(GAME_BOARD_WIDTH/2, GAME_BOARD_HEIGHT-1, SHIP_WIDTH,
SHIP_HEIGHT);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
gameFrame = new InvadersGameFrame();
}
});
gameFrame.addGameObject(myShip); //Problem line
gameFrame.repaint();
}
的gameFrame然後調用:
GameBoard gameBoard = new GameBoard();
...
...
public void addGameObject(GameObject ob) {
gameBoard.addGameObject(ob);
}
進而調用:
public class GameBoard extends JPanel implements GameData{
private JPanel gameBoard;
private List<GameObject> objects = new ArrayList<>();
public GameBoard() {
gameBoard = new JPanel();
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
setBackground(Color.black);
g.setColor(Color.RED);
for(GameObject ob : objects){
g.drawOval(ob.x, ob.y, ob.width, ob.height);
}
}
//Places object into list for drawing upon next repaint.
public void addGameObject(GameObject ob) {
objects.add(ob);
}
}
現在我的問題是我收到一個空指針異常,當我gameFrame.addGameObject(myShip);
棘手的是當我ru n通過調試器我根本沒有收到NPE(但我的對象列表仍然顯示爲空)。
另外,我可以按照每個這些仍然看到myShip,所以我只是引用我的GameObject(船)錯了嗎?
我的addGameObject參數應該更抽象嗎?
你有一個stacktrace發佈? –
您的堆棧跟蹤是調試此類事件時最有價值的信息。你爲什麼忘記發佈它? –
因爲我太新鮮了,甚至不知道如何獲得堆棧跟蹤。我會谷歌並返回。 – user1695505