基于事件的隐式调用风格的基本组件是对象或过程,并分类为以下更小的组件:过程或函数。充当事件源或事件处理器的角色。
连接件是事件-过程绑定。组件可以声明或广播一个或多个事件,或者向系统注册,来表明他希望响应一个或多个事件。当某些事件被触发时,向其注册的过程被隐式调用,调用的次序是不确定的。
程序示例如下:
【功能】:点击窗口程序使显示的文字发生改变。
import java.awt.*;
import java.awt.event.*; //引入java.awt.event包处理事件
class BtnLabelAction extends Frame implements ActionListener {
// 声明窗口类(BtnLabelAction)并实现动作事件接口(ActionListener)
Label p;
Button btn;
void CreateWindow() { // 自定义方法
setTitle("MyButton");
p = new Label("1+1"); // 创建标签对象
btn = new Button("求和"); // 创建按钮对象
setLayout(new FlowLayout()); // 布局设计,用于安排按钮、标签的位置
add(p); // 将标签放入容器
add(btn); // 将按钮放入容器
btn.addActionListener(this); // 将监听器(窗体对象本身)注册给按钮对象
setSize(400, 100);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {// 接口ActionListener的事件处理方法
if (e.getSource() == btn) // 判断动作事件是否是由按钮btn引发的
if (p.getText() == "1+1") {
p.setText("1+1=2");
btn.setLabel("返回");
} else {
p.setText("1+1");
btn.setLabel("求和");
}
}
}
public class BtnTest {
public static void main(String args[]) {
BtnLabelAction bla = new BtnLabelAction();
bla.CreateWindow();
}
}
组件:注册方法addActionlinster(),处理事件的方法 actionPerformed(),发生的事件ActionEvent e,事件源btn,监听器this(窗体对象本身,实现了Actionlistener接口类的对象)。
连接件:①btn.addActionListener(this); 将事件源按钮对象注册到监听器
②系统定义对事件的处理方法,发生的事件为参数public void actionPerformed(ActionEvent e)
③单击btn触发ActionEvent事件,事件管理器会根据发生的ActionEvent事件,自动调用actionPerformed()方法,执行方法体中的语句。