java学习(3)

y4ny4n

期末考试临时冲的,java的事件处理以及监听类的几个类别。

事件处理

监听类

监听类的四种选择

  1. 选择本类
  2. 定义一个实现了接口XXXListener的新类作为监听类
  3. 定义一个继承于相应适配器类的新类作为监听类
  4. 匿名类

本类监听

1
2
3
4
5
6
7
8
class MyFrame extends JFrame implements XXXListener{
MyFrame(){
组件名.addXXXListener(**this**);
}
public void actionPerformed(ActionEvent arg0){

}
}

定义一个实现接口的新类作为监听类

1
2
3
4
5
6
7
8
9
class MyFrame extends JFrame{
MyListener listener = new MyListener(this);
//想传递谁就把相应组件放在括号中
组件名.addXXXListener(listener);
//监听类对象
}
class MyListener implements XXXListener{

}

只要类声明实现接口,就必须重写定义接口的方法

若只想使用其中一个,其他的方法也不能删去

定义一个继承于相应适配器类的新类作为监听类

1
2
3
4
5
6
7
8
9
10
11
class MyFrame extends JFrame{
MyFrame(){
MyListener listener = new MyListener(this);
//想传递谁就把相应组件放在括号中
组件名.addXXXListener(listener);
//监听类对象
}
}
class MyListener extends XXXAdapter{

}

与接口类不同的是,如果想处理某一方法,就在新类中重写这个方法

选择匿名类作为监听类(最常见)

依赖于相应接口创建匿名类
1
2
3
4
5
6
7
class MyFrame extends JFrame{
MyFrame(){
组件名.addXXListener(new XXXListener(){
//重写XXListener接口中定义的所有方法
});
}
}

new A类(){}表明了创建这个A类的子类(匿名类)的实例对象

new I接口(){}表明创建了一个匿名类实例,这个类是声明实现I接口的

new 接口(){}不是创建接口实例,接口是不能创建实例的

依赖于适配器类创建匿名类
1
2
3
4
5
6
7
class MyFrame extends JFrame{
MyFrame(){
组件名.addXXListener(new XXAdapter(){
//重写关注事件的相应方法
});
}
}
  • 本文标题:java学习(3)
  • 本文作者:y4ny4n
  • 创建时间:2020-11-30 22:05:44
  • 本文链接:https://y4ny4n.cn/2020/11/30/java3/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!