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");
}
}
继承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