java事件模型的流程
Event Source(事件源):事件发生的场所,通常就是各个组建,例如按钮,窗口菜单等,
Event(事件):事件封装了GUI组件上发生的特定事情,
EventListener(事件监听器):负责监听事件源所发生的事情,并对各种事件做出相应处理
当用户按一下按钮,就会出发一个相应的事件,
package test1;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class EventQs {
private Frame f = new Frame("测试事件");
private Button ok = new Button("确定");
private TextField tf = new TextField(30);
public void init() {
// 注册监听器
ok.addActionListener(new OkListener());
f.add(tf);// 将button添加到Frame中
f.add(ok, BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}
// 定义事件监听器类
class OkListener implements ActionListener {
// 定义的方法是事件处理器,用于相应特定的事件
public void actionPerformed(ActionEvent e) {
System.out.println("用户单击了ok按钮");
tf.setText("HEllo word!!");
}
}
public static void main(String[] args) {
new EventQs().init();
}
}
说明:
1.实现事件监听器类,该监听器类是一个特殊的Java类,必须实现一个XxxLintener接口
2.创建普通组建,创建监听器对象
3.调用addXxxListener方法将事件监听器对象注册给普通组建,这样当事件源上发生指定事件时,AWT会出发事件监听器,由事件监听器调用相应的方法(事件处理器)来处理事件,事件源上所发生的事件会作为参数传入事件处理。
AWT事件分为两大类:低级事件和高级事件
package test1;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class TestWindoeListener {
private Frame f = new Frame("测试");
private TextArea ta = new TextArea(200, 200);
public void init() {
f.addWindowListener(new MyListener());
f.setBounds(400,400,450,320);
f.add(ta);
f.setVisible(true);// 设置可见
}
class MyListener implements WindowListener {
@Override
public void windowActivated(WindowEvent e) {
// ta.append("窗口被激活!\n");
}
@Override
public void windowClosed(WindowEvent e) {
// ta.append("窗口被成功关闭!\n");
}
@Override
public void windowClosing(WindowEvent e) {
// ta.append("用户试图关闭窗口!\n");
System.exit(0);
}
@Override
public void windowDeactivated(WindowEvent e) {
// ta.append("窗口失去焦点");
}
@Override
public void windowDeiconified(WindowEvent e) {
// ta.append("窗口被恢复!\n");
}
@Override
public void windowIconified(WindowEvent e) {
// ta.append("窗口被最小化");
}
@Override
public void windowOpened(WindowEvent e) {
// ta.append("窗口初次被打开! \n");
}
}
public static void main(String[] args) {
new TestWindoeListener().init();
}
}

浙公网安备 33010602011771号