事件处理

1,委托事件模式

XXXEvent----XXXListener

Low-level Event和Semantic Event

2,WindowEvent

基本的实现原理,添加监听器,实现方法等

import java.awt.Frame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

/*窗口事件测试
 * */
public class WindowEventTest {

	
	public static void main(String[] args) {
		//生成一个Frame窗口对象
		Frame f = new Frame("WindowEventTest");
		/*为这个Frame对象添加一个监听器,这个监听器是
		 * 一个类的对象,类是需要我们自己去写的,包含了
		 * 需要处理的事件的方法*/
		f.addWindowListener(new WindowEventHandler());
		
		f.setSize(200,200);
		f.show();
	}
}

/*监听器的类,实现了WindowListener接口,
 * 必须实现里面的全部方法,这样会不会显得麻
 * 烦呢,因为用不上的方法也要实现它*/
class WindowEventHandler implements WindowListener
{
	public void windowClosing(WindowEvent e)//这件事系统已经给我们做了,我们写的方法是系统做了之后我们希望发生的事件
	{
		System.out.println("Window Closing event");
		System.exit(0);
	}
	
	public void windowIconified(WindowEvent e)
	{
		System.out.println("Window Iconified event");
	}
	
	public void windowActivated(WindowEvent e)
	{
		System.out.println("Window Activated event");
	}
	
	public void windowOpened(WindowEvent e)
	{
		System.out.println("Window Opened event");
	}
	
	public void windowDeiconified(WindowEvent e)
	{
		System.out.println("Window Deiconified event");
	}
	
	public void windowClosed(WindowEvent e)
	{
		System.out.println("Window Closed event");
	}
	
	public void windowDeactivated(WindowEvent e)
	{
		System.out.println("Window Deactivated event");
	}
}

2,MouseEvent

继承Adapter就不需要实现所有方法;

把事件源和监听器写在一个类里如何添加监听器

import java.awt.Frame;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

/*鼠标事件测试,这里事件源和事件监听器写在一个类里面了,即Frame向它自己所在的类注册
 * ,因为监听器就是它自身,监听器处理事件的方法也写在这个类中,所以为了使得监听器中
 * 的方法能使用Frame的对象(监听器的方法就是来对这个对象进行操作的),需要先将Frame
 * 声明为类的成员变量!!!!*/

//1,继承Adapter类就不用实现所有的方法
//2,因为它自身也是一个监听器,所以要implements事件处理的类Listener
public class MouseEventTest extends MouseAdapter implements MouseMotionListener {

	//将事件源f声明为类的成员变量
	Frame f;
	
	public static void main(String[] args) {
		
		new MouseEventTest();
	}
	
	public MouseEventTest(){
		f = new Frame("MouseEvent test");
		f.addMouseListener(this);
		f.addMouseMotionListener(this);
		f.setSize(300,200);
		f.setVisible(true);
	}
	
	//监听器中的方法
	public void mouseClicked(MouseEvent e)
	{
		f.setTitle("Mouse clicked!");
	}
	
	public void mouseExited(MouseEvent e)
	{
		f.setTitle("Mouse exited!");
	}
	
	//事件本身也是一个类,可以通过e来获得事件的相关参数和信息
	public void mouseMoved(MouseEvent e)
	{
		int x = e.getX();
		int y = e.getY();
		f.setTitle("Mouse moved at (" + x +", " + y +")");
	}
	
	public void mouseDragged(MouseEvent e)
	{
		
	}
}

3,KeyEvent

posted @ 2011-03-29 20:33  jinmengzhe  阅读(357)  评论(0编辑  收藏  举报