A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在GUI编程中事件监听器WindowListener、WindowAdapter、ActionListener好像都可以用于Frame组件中,它们之间有什么样的内在区别?

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

2 个回复

倒序浏览

回帖奖励 +2 黑马币

对着代码给你讲吧
  1. import java.awt.*;
  2. import java.awt.event.*;

  3. public class TestActionEvent {
  4.     public static void main(String args[]) {
  5.                         Frame f = new Frame("Test");
  6.                         Button b = new Button("点我");
  7.                         Monitor bh = new Monitor();                //创建一个监听器对象
  8.                         b.addActionListener(bh);
  9.                         f.add(b,BorderLayout.CENTER);
  10.                         f.pack();
  11.                         f.setVisible(true);
  12.     }
  13. }

  14. class Monitor implements ActionListener {        //定义一个监听器的类,该类实现了ActionListener接口
  15.     public void actionPerformed(ActionEvent e) {
  16.         System.out.println("按钮已被单击");   
  17.     }
  18. }
复制代码
ActionListener是一个接口,该接口中只声明了一个方法actionPerformed(ActionEvent e),覆写该方法,对控件进行事件监听,当事件发生时,执行该方法中的内容
WindowListener是一个接口,WindowAdapter是实现了这个接口的抽象类,可以对窗口事件进行监听,只需要接口就行了吧,WindowAdapter为什么而存在,sun公司(貌似现在被Oracle吞了)干嘛要做如此多此一举的事呢,其实这是有实际需要的,还是这段代码
  1. import java.awt.*;
  2. import java.awt.event.*;

  3. public class TestActionEvent {
  4.     public static void main(String args[]) {
  5.                         Frame f = new Frame("Test");
  6.                         Button b = new Button("点我");
  7.                         //Monitor bh = new Monitor();                //创建一个监听器对象
  8.                         //b.addActionListener(bh);
  9.                         f.add(b,BorderLayout.CENTER);
  10.                         f.pack();
  11.                         f.addWindowListener(new Monitor());
  12.                         f.setVisible(true);
  13.     }
  14. }

  15. class Monitor extends WindowAdapter {        //定义一个监听器的类,该类实现了ActionListener接口
  16.         public void windowClosing(WindowEvent e) {
  17.                 System.out.println("窗口已被关闭");
  18.                 System.exit(0);
  19.         }
  20. }
复制代码
其实你也可以自定义类实现WindowListener接口,但是你不是要每种事件发生时都需要运行相应的程序,如果实现了WindowListener接口,你就要把WindowListener接口中的六个方法全重写一遍,相反如果继承了WindowAdapter,就只需要重写你所需要的方法
回复 使用道具 举报
vmvm555 发表于 2013-1-28 20:01
对着代码给你讲吧ActionListener是一个接口,该接口中只声明了一个方法actionPerformed(ActionEvent e),覆 ...

懂了,还是大哥知识点吃得透!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马