public class MyPanel extends JPanel implements KeyListener { //定义我的坦克 MyTank myTank = null; //定义敌人的坦克 Vector<EnemyTank> enemyTankV = new Vector<>(); int enemyTankSize=3; public MyPanel() { myTank = new MyTank(100, 100);//初始化自己的坦克 myTank.setSpeed(5); enemyTankV.setSize(3);//错误,报异常:Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException for (int i = 0; i < enemyTankSize; i++) { EnemyTank enemyTank = new EnemyTank((100 * (i + 1)), 0); //设置坦克方向 enemyTank.setDirect(2); enemyTankV.add(enemyTank); } //enemy = new EnemyTank(200,200);//初始化敌人的坦克 } @Override //1.继承父类的方法,设置自己的画笔 public void paint(Graphics g) { super.paint(g); g.fillRect(0, 0, 1000, 750); //画出坦克-封装方法 drawTank(myTank.getX(), myTank.getY(), g, myTank.getDirect(), 1); //drawTank(myTank.getX()+90, myTank.getY(), g, 1, 1); //画出敌人的坦克 // drawTank(enemy.getX(), enemy.getY(), g, enemy.getDirect(), 0); // drawTank(enemy.getX() + 70, enemy.getY(), g, enemy.getDirect(), 0); // drawTank(enemy.getX() + 140, enemy.getY(), g, enemy.getDirect(), 0); //画出敌人的坦克遍历Vector for (int i = 0; i <enemyTankV.size(); i++) { //取出坦克 EnemyTank enemy = enemyTankV.get(i); drawTank(enemy.getX(),enemy.getY(),g,enemy.getDirect(),0); } }
多写了一句:
enemyTankV.setSize(3);//错误,报异常:Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
导致:drawTank(enemy.getX(),enemy.getY(),g,enemy.getDirect(),0);出现空指针异常