一、Java事件与事件驱动的机制
java采用了委托型事件处理模式,即对象(指组件)本身没有用成员方法来处理事件,而是将事件委托给事件监听者处理,这就使得组件更加简练。
能产生事件的组件叫做事件源。如果希望对事件进行处理,可调用事件源的注册方法把事件监听者注册给事件源,当事件源发生事件时,事件监听者就代替事件源对事件进行处理,这就是所谓的委托。
事件监听者可以是一个自定义类或其他容器,如Frame。它们本身也没有处理方法,需要使用事件接口中的事件处理方法。因此,事件监听者必须实现事件接口。
【例8.3】将一个标明【Exit】的命令按钮放置在窗体下方。点击该按钮,程序将结束运行,退回到系统状态。
1 import java.awt.*; 2 import java.awt.event.*; //引入事件类 3 class Exa_8_3 extends Frame //在构造方法中将完成监听器的注册工作 4 { public Exa_8_3(String title) 5 { super(title); 6 setLayout(null); 7 Button btnExit=new Button("Exit"); //创建按钮组件 8 ExitHandler handler=new ExitHandler(); //创建监听器对象 9 btnExit.addActionListener(handler); //将监听器注册给按钮对象 10 btnExit.setBounds(80,100,80,50); 11 add(btnExit); 12 setSize(240,200); 13 setVisible(true); 14 } 15 //主方法中生成应用类的实例对象 16 public static void main(String args[]) 17 { new Exa_8_3("Event-Handling Demo-1"); 18 } 19 } //应用类定义结束
20 //定义处理ActionEvent事件的类,监听器由该类创建 21 //该类实现ActionListener接口的抽象方法actionPerformed(ActionEvent e) 22 class ExitHandler implements ActionListener 23 { public void actionPerformed(ActionEvent e) 24 { System.exit(0); //终止程序的Java命令 25 } 26 }