内部类并不能访问外部类所定义的对象。除非内部类有外部类的对象的引用。
而匿名类不可能有外部类的引用。因此监听器可以写一个内部类,并在初始化的时候将外部类实例的引用传进去。
还有一个更好的办法是
public class Exame extends Applet implements MouseMotionListener然后:
d.addMouseMotionListener(this);是否看懂?

解决方案 »

  1.   

    鼠标坐标点怎么传进Canvas类里?
      

  2.   

    不懂传进入?下面的代码是在构造函数中将A的实例传给了B的实例。
    还可以使用函数阿!等等方法。
    public class A{
        class B{
            A a;
            B(A a){
               this.a = a;
            }
        }
    }
    =================
    不过你的例子中,最好使用我建议的方法。简单,不用增加多余的类!
      

  3.   

    对了在上面中,你new B的时候就必须:
     A a= new A();
     B b = new B(a);
      

  4.   

    >内部类并不能访问外部类所定义的对象。除非内部类有外部类的对象的引用。
    >而匿名类不可能有外部类的引用。
    这样说是不对的。对baozi3026 (星尘)的问题,
    可以使d成为class Exame的成员,然后在匿名内部类中这样引用:
    Exame.this.d