当前位置: 代码迷 >> J2SE >> 关于马士兵坦克大战的有关问题
  详细解决方案

关于马士兵坦克大战的有关问题

热度:69   发布时间:2016-04-23 20:05:11.0
关于马士兵坦克大战的问题
本帖最后由 xiaoxin504 于 2014-11-23 16:35:17 编辑
Tank   构造函数为
 Tank(int x, int y )
 Tank(int x, int y ,TankClient  tc)


public class TankClient extends Frame {
Tank myTank = new Tank(50,50,this);    //*******这个没问题******
public void launchFrame(){
this.addKeyListener(new KeyAdapter() { 
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_SPACE)  Tank myTank1 = new Tank(50,50,this);   // ***]*这个报错********
//******** 如果是  Tank myTank1 = new Tank(50,50),  没问题****
                       }
});
}
}

------解决思路----------------------
this指针是一个隐含的指针,它是指向对象本身的,代表了对象的地址.Tank myTank = new Tank(50,50,this); 这行代码是定义了TankClient这个类的属性,这个时候this指针指向的是TankClient这个类的当前对象位置,接下来你定义了一个成员函数,这个成员函数的作用是给当前类的对象添加对键盘事件的监听,需要注意在keyPressed(KeyEvent e)这个方法中,当前对象变成了键盘相应的事件对象,这个时候,在这个方法中使用this指针,并不是获取当前TankClient对象的实际地址,而是键盘响应事件的实际地址。可以用eclipse跟踪下看看。
  相关解决方案