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(); } }