/* 范例名称:Java事件处理举例
* 源文件名称:TestActionEvent.java
* 要 点:
* 1. Java事件处理机制
* 2. 事件源、事件监听器概念及作用
* 3. 如何在一个现有组件上注册监听器
*/
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("Press Me!");<span style="white-space:pre"> </span>
Monitor bh = new Monitor();<span style="white-space:pre"> </span>//新建一个监视器类
b.addActionListener(bh);<span style="white-space:pre"> </span>//将监视器添加到事件b上,当b被发生这件事的是,通知监视器,调用监视器的方法
f.add(b,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
}
class Monitor implements ActionListener {<span style="white-space:pre"> </span>//定义一个监视器类,当活动被侦测到然后通知这个类,调用类中的方法
public void actionPerformed(ActionEvent e) {
System.out.println("a button has been pressed");
}
}
/* 范例名称:Java事件处理举例
* 源文件名称:TestActionEvent2.java
* 要 点:
* 1. 一个事件源组件上可以同时注册多个监听器
* 2. 一个监听器对象可以同时注册到多个事件源组件上
* 3. 事件源的信息可以随它所触发的事件自动传递到所有注册过的监听器
*/
import java.awt.*;
import java.awt.event.*;
public class TestActionEvent2 {
public static void main(String args[]) {
Frame f = new Frame("Test");
Button b1 = new Button("Start");
Button b2 = new Button("Stop");
Monitor2 bh = new Monitor2();
b1.addActionListener(bh);
b2.addActionListener(bh);<span style="white-space:pre"> </span>//将同一个监视器放在不同的按钮上,共同监控,无论哪个按钮发生都会调用方法
b2.setActionCommand("game over");<span style="white-space:pre"> </span>//自定义时间名,在下面显示的时候就不是默认的了
f.add(b1,"North");
f.add(b2,"Center");
f.pack();
f.setVisible(true);
}
}
class Monitor2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("a button has been pressed," +
"the relative info is:\n " + e.getActionCommand()); <span style="white-space:pre"> </span>//getActionCommand()是用来区分按钮的,默认的是按钮的名字,也可以定义
}
}