前言
简单总结Swing开发中对组件添加事件响应的三种方法。
参考:https://blog.csdn.net/moridehuixiang/article/details/45394577
事件响应
在Swing中,事件响应是通过监听器对象来处理事件的方式实行的,这种方式被称为事件委托模型。
以JButton举例,它内部有一个名为listenerList的链表,在点击按钮时,会产生一个ActionEvent事件,此后内部会依次调用位于listenerList中的每一个实现ActionListener接口的类的实例的actionPerformed方法,这就是事件响应的过程。
当调用JButton的addActionListener方法时, 外部实现了ActionListene接口的类的实例的指针就被放入了listenerList中,当按钮点击事件产生时,这个实例的actionPerformed方法就会被调用,从而按钮的点击事件处理就被委托到了该实例中进行处理。
实现方式
实现ActionListener接口的三种方式如下:
1.实现一个ActionListener接口的子类,再把按钮的事件响应委托给这个子类的实例处理.这种方式并不常用。
2.让界面类(通常是继承了JFrame)实现ActionListener接口,再把事件响应委托给界面类。这种方式适合于处理一些短小简单或要求内聚的事件响应。
3.用匿名类实现ActionListener接口,再把事件委托给这个匿名类的实例,这种方式是Swing事件处理的主流。
方法一:创建一个实现了ActionListener接口的子类
1 | public class ButtonActionListener implements ActionListener{ |
方法二:整个窗体类实现ActionListener接口
1 | public class MyWindow extends JFrame implements ActionListener{ |
方法三:匿名类方式添加
1 | button.addActionListener(new ActionListener() { |