对着代码给你讲吧- import java.awt.*;
- import java.awt.event.*;
- public class TestActionEvent {
- public static void main(String args[]) {
- Frame f = new Frame("Test");
- Button b = new Button("点我");
- Monitor bh = new Monitor(); //创建一个监听器对象
- b.addActionListener(bh);
- f.add(b,BorderLayout.CENTER);
- f.pack();
- f.setVisible(true);
- }
- }
- class Monitor implements ActionListener { //定义一个监听器的类,该类实现了ActionListener接口
- public void actionPerformed(ActionEvent e) {
- System.out.println("按钮已被单击");
- }
- }
复制代码 ActionListener是一个接口,该接口中只声明了一个方法actionPerformed(ActionEvent e),覆写该方法,对控件进行事件监听,当事件发生时,执行该方法中的内容
WindowListener是一个接口,WindowAdapter是实现了这个接口的抽象类,可以对窗口事件进行监听,只需要接口就行了吧,WindowAdapter为什么而存在,sun公司(貌似现在被Oracle吞了)干嘛要做如此多此一举的事呢,其实这是有实际需要的,还是这段代码- import java.awt.*;
- import java.awt.event.*;
- public class TestActionEvent {
- public static void main(String args[]) {
- Frame f = new Frame("Test");
- Button b = new Button("点我");
- //Monitor bh = new Monitor(); //创建一个监听器对象
- //b.addActionListener(bh);
- f.add(b,BorderLayout.CENTER);
- f.pack();
- f.addWindowListener(new Monitor());
- f.setVisible(true);
- }
- }
- class Monitor extends WindowAdapter { //定义一个监听器的类,该类实现了ActionListener接口
- public void windowClosing(WindowEvent e) {
- System.out.println("窗口已被关闭");
- System.exit(0);
- }
- }
复制代码 其实你也可以自定义类实现WindowListener接口,但是你不是要每种事件发生时都需要运行相应的程序,如果实现了WindowListener接口,你就要把WindowListener接口中的六个方法全重写一遍,相反如果继承了WindowAdapter,就只需要重写你所需要的方法 |