class Mypanel extends JPanel implements KeyListener
{    
 //定义一个我的坦克
//Hero hero=new Hero(100, 100);有这一行就无空指针问题
Hero hero=null;如果仅仅有这一行没有上一行的话就会出现空指针,,下面的构造函数明明初始化了啊
//定义一个敌人坦克
Vector<EnemyTank> ets=new Vector<EnemyTank>();
int enSize=3;
public Mypanel()
{   
//初始化我的坦克
Hero hero=new Hero(100, 100);]初始化
//初始化敌人坦克
for(int i=0;i<enSize;i++)
{    //创建一辆敌人的坦克对象
       EnemyTank et=new EnemyTank((i+1)*50,0);
       et.setColor(0);
       //加入
       ets.add(et);
}
}

解决方案 »

  1.   

    Hero hero=null;如果仅仅有这一行没有上一行的话就会出现空指针,,下面的构造函数明明初始化了啊
    你的hero的初始化调用的不是它自己的构造方法,是在MyPanel内部的。属于局部变量,出了方法,就失效了。
      

  2.   

    此hello 非彼hello 是两个不同的对象 
    //初始化我的坦克
    Hero hero=new Hero(100, 100);]初始化改为//初始化我的坦克
    hero=new Hero(100, 100);]初始化试试
      

  3.   

    我想楼主忽略了一点,就是你定义的成员变量初始化为null了,而在构造方法中再次定义了一个Hero对象,虽然这个对象初始化了,可是这个对象鱼成员变量的Hero不是一个对象,这个Hero只在构造方法中有效,而实际上成员变量的Hero在后期调用的时候还是null
      

  4.   

    在构造方法里 hero 变成局域变量了, 同名的话 局域变量是优先的