日期:2014-05-20  浏览次数:20777 次

关于java事件监听的小问题
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){}


}
和我用内部类 ,匿名类来写事件有什么区别。。

是不是这三种方法都适用?

------解决方案--------------------
这个没有太大区别,只要接口实现的业务逻辑一样

如果有区别的话,你现在的这种写法更加方便一些,因为这样实现接口实现方法可以引用到KeyEventemo类的所有

属性,而如果要使用内部类的话,只能使用KeyEventemo里面声明为final的变量,内部类的使用需要将一些相关变

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

------解决方案--------------------
探讨
public clss KeyEventemo Extends Frame impments Keyistener{

Button =new Button();
Button.addKeyListener(this)

然后把addKeyListener接口的三个方法重写
public void KeyPressed(KeyEvent eve){}
public void Key……