public clss KeyEventemo Extends Frame impments Keyistener{Button =new Button();
Button.addKeyListener(this)然后把addKeyListener接口的三个方法重写
public void KeyPressed(KeyEvent eve){}
public void KeyRelease(KeyEvent eve){}
public void KeyType(KeyEvent eve){}
}
和我用内部类 ,匿名类来写事件有什么区别。。是不是这三种方法都适用?

解决方案 »

  1.   

    这个没有太大区别,只要接口实现的业务逻辑一样如果有区别的话,你现在的这种写法更加方便一些,因为这样实现接口实现方法可以引用到KeyEventemo类的所有属性,而如果要使用内部类的话,只能使用KeyEventemo里面声明为final的变量,内部类的使用需要将一些相关变量设置为final,对于值会变化的常量,这是不可能的,只能用你现在 “自己侦听自己”的设计模式
      

  2.   

    区别不大
    离开了这个Frame的业务,这个监听器就没什么太大的用途了,也就是说没有什么所谓的代码重用的价值,所以直接在主类impelents也比较方便
    用内部类或匿名类,对于外部类的局部变量的访问有一定的限制,不过可以改用外部类的成员变量,非要使用局部变量,那么就要用final,这样局部变量就不能再发生变化,所以要根据情况而决定
      

  3.   

    嗯。。刚学java没多久。。问的问题都很弱,而且你的回答我看了好几遍还似懂非懂,还是谢谢你啦,我想以后我会明白你说的