文档介绍:北京大学计算机系代亚非
第三章事件处理
1
第3章事件处理
什么是事件
鼠标产生的事件
键盘产生的事件
动作事件
通用事件处理程序
发送自己的事件
Java
小结
2
什么是事件? 用户用于交互而产生的键盘或
鼠标动作.
响应用户的动作称为处理事件.
在类Event中,定义了所有的事件处理方法,
小应用已经继承了这些方法.
www浏览器
Web server
外部程序
C程序
数据库程序
cgi
form
applet
url
interact
什么是事件
CGI之外的选择
3
什么是事件
import ;
,无论哪个键按下或者释放,还是鼠标移动,按下鼠标或释放鼠标,AWT都会捕获,并产生一个事件.
处理事件的核心是重写处理事件的方法
通用方法:
handEvent(Event evt, Object arg)
专用方法:
MouseDown(Event evt, Object arg)
4
Event类的数据域
什么是事件
Event
Object arg
int clickCount
int id
int key
int modifiers
Object target
int x
int y
long when
5
什么是事件
Event
HandleEvent()
MouseUp()
MouseDown()
MouseDrag()
MouseMove()
MouseEnter()
MouseExit()
keyDown()
KeyUp()
action()
如果你不覆盖你要处理的方法,则缺省的方法返回一个假值,通知系统没有处理事件
。
6
鼠标事件的三个参数:
(是移动?托拽)
?
(x,y)
方法的重写:
public boolean mouseDown(Event evt,int x,int y)
{….}
7
捕获事件
mouseDown
获得参数(x,y)
(Event evt,
int x, int y)
在(x,y)处画叉
paint()
drawLine
例:在鼠标单击的地方显示“”.()
思路:记忆鼠标点过的所有点
marks[]=newPoint[20];(在init方法中)
[i++]=new Point(x,y); (MouseDown方法中)
(在paint方法中)
(x,y,10,10);
8
.
boolean mouseDown(Event evt, int x, int y)
{ Marks[i++]=new Point(x,y);
repaint();
}
public void paint(Graphics g)
{ int k;
for (k=0;k<i;k++){
(Marks[k].x,Marks[k].y,10,10);
}
import .*;import .*;
public class mark extends Applet
{ int i; Point Marks[];
public void init()
{Marks[] =new Point[20]; i=20;}
9
import .*;import ;
public class CountClick extends Applet
{int CurrentMarks=0;
public boolean mouseDown(Event evt,int x,int y)
{ CurrentMarks++;
repaint();
return true;
}
public void paint(Graphics g)
{ (" "+CurrentMarks,10,10);}
}
[练习]对鼠标的点击动作计数
10