Swing 实现事件处理
基本方法:
组件. addXXXLinster( XXXLinster 接口实现类的对象 );
其中
组件 :该组件需要对事件有响应。
XXXLinster 接口实现类的对象 :该对象的类实现了 XXXLinster 接口,所以该类中有处理相应事件的方法。
addXXXLinster :事件绑定,组件与事件处理对象绑定。
方法一:
public class ClassName implements XXXLinster{
类中的某个方法(…){
…
组件.addXXXLinster(this);
…
}
//接口方法
接口需要实现的方法1(XXXEvent e){
…
}
//...
接口需要实现的方法n(XXXEvent e){
…
}
}
方法二:独立监听器类实现事件处理
public class 自定义监听器类名 implements 事件监听器{
接口需要实现的方法1(XXXEvent e){
…
}
//...
接口需要实现的方法n(XXXEvent e){
…
}
}
public class ClassName {
类中的某个方法(…){
…
组件.addXXXLinster(new 自定义监听器类名());
…
}
}
方法三:使用匿名类
public class ClassName {
类中的某个方法(…){
…
组件.addXXXLinster(new 匿名类父类(){
接口需要实现的方法1(XXXEvent e){
…
}
//...
接口需要实现的方法n(XXXEvent e){
…
}
});
…
}
}
方法四:监听器类为内部类
public class ClassName{
public class 内部类监听器类名 implements XXXLinster{
接口需要实现的方法1(XXXEvent e){
…
}
....
接口需要实现的方法n(XXXEvent e){
…
}
}
类中的某个方法(…){
…
组件.addXXXLinster(this);
…
}
}
说明:
使用匿名类 创建事件监听器 可以不用定义接口中所有方法。
implements 监听接口 ,则需要定义所有方法。即使组件对有些事件不响应,也必须要写出这些方法。
事件适配器(Adapter)
使用事件适配器可以在编程时只定义需要写的事件响应方法。其他方法可以不写。
通过extends Adapter 使用 事件适配器。
事件监听器和对应 的Adapter
ComponentLinster | ComponentAdapter |
ContainerLinster | ContainerAdapter |
FocusListener | FocusAdapter |
KeyListener | KeyAdapter |
MouseListener | MouseAdapter |
MouseMotionListener | MouseMotionMouseAdapter |
WindowFocusLinster | WindowAdapter |
WindowStateListener | 同上 |
WindowList ener | 同上 |
注意:
上述所有的XXXAdapter都直接继承于Object类。即没有Adapter类。
java为单继承。一旦继承了某个Adapter。则无法继承其他的类。