1)在static方法或者在main方法里是不能用this关键字的,因为this是表示这个对象实例,而static方法已经可脱离对象实例而单独存在。
2)KeyPress方法被调用时,不一定要被foucus住

解决方案 »

  1.   

    还是不太明白 我并没有定义static
    还有keypress同时为甚麽不能用c.requestFocus(); 是不是这个方法必须在keypress之前定义呀
    s+=e.getKeyChar();//这下面两句不太明白
    c.getGraphics().drawString(s,0,20);
      

  2.   

    你如果要把c.requestFocus(); 放到KeyPress里去的话就必须写成this.requestFocus();
    至于你这个问题:
    mc.c.addMouseListener(mc);//为甚麽不能用this
    呵呵,真不知道该怎么解释,你这段代码是放在main函数里的,而main函数是一个static函数,也就是说你用不着用当前类的定义去声明一个变量就可以调用它,也就是说你不用经过以下步骤:MyCanvas mc=new MyCanvas();
    mc.main();
    而是直接这样调用:MyCanvas.main();
    这个时候main函数被调用,注意你使用一个类的定义去调用的,而不是定义一个类的实例,然后再去调用它的。那么如果在main函数里写this的话,这个this代表什么呢?什么也不代表,因为你根本就没有定义一个这样的实例!