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

  

 

posted on 2011-12-16 13:45  wangbokun  阅读(825)  评论(0编辑  收藏  举报

导航