授权事件模型
1、概念:一个源(source)产生一个事件(event)并把它送到一个或多个的监听器(listener),监听器--->一直等待--->接收--->处理--->返回.
2、优点:处理事件的应用程序和产生事件的用户接口程序分开.
3、条件:在授权事件模型中,监听器为了接受一个事件通知必须注册。
好处:事件只被发送给那些想接受它们的监听器。
4、注意:Java允许处理事件而不采用授权事件模型,可通过扩展一个awt组件来实现.
事件
1、概念:事件是描述事件源状态改变的对象.
2、事件产生的原因:人与图形用户接口的交互 或 不是由于用户接口的交互而直接发生,如:定时器到期,软件或硬件错误发生,或一个操作完成.
事件源
1、概念:一个产生事件的对象.
2、事件源可能不止产生一种事件.
3、事件源必须注册监听器以便监听器可以接受某一特定事件的通知.
4、多播事件和单播事件:
一个事件源可以注册多个监听器 --多播事件
一个事件源只允许注册一个监听器 --单播事件
5、事件源允许注销一个特定事件
public void removeTypeListener(TypeListener el)
事件监听器
1、概念:在事件发生时被通知的对象。
2、实现条件:
在事件源中注册特定类型的事件
实现处理事件通知的方法
事件类
1、类EventObject(java.util包中)是java事件类层次结构的根节点,是所有事件类的父类.
2、构造函数
public EventObject(Object src);
3、EventObject类的两个方法:
Object getSource() --返回事件源,等价于事件的一个字符串.
public String toString()
4、AWTEvent类(java.awt包中)是EventObject类的子类,它在授权模型中被使用.
5、AWTEvent类的getID() -- 返回事件类型.
6、java.awt.event中的主要事件类
ActionEvent --通常在按下一个按钮,双击一个列表项或者选中一个菜单项时发生.
AdjustmentEvent --当操作一个滚动条时候发生.
ComponentEvent --当一个组件隐藏、移动、改变大小或成为可见时发生.
FocusEvent --当一个组件获得或失去键盘焦点时发生.
InputEvent --所有组件的输入事件的抽象超类
ItemEvent --当一个复选框或列表被点击时发生;当一个选择框或一个可选择菜单的项被选择或取消时发生.
KeyEvent --当输入从键盘获得时发生.
MouseEvent --当鼠标被拖动,移动,点击,按下,释放时发生;或者在鼠标进入或退出某一组件时发生
TextEvent --当文本区和文本域的文本改变时发生.
WindowEvent --当一个窗口激活,关闭,失效,恢复,最小化,打开或退出时发生
ActionEvent 类
1、描述:在一个按钮被按下,列表框中的一项被选择,或者是一个菜单项被选择时都会产生一个ActionEvent 事件
2、四个表示功能修改的整型常量:
ALT_MASK , CTRL_MASK , META_MASK ,SHIFT_MASK
ACTION_PERFORMED --用来标识事件
3、构造函数(两个):
public ActionEvent(Object src,int type,String cmd);
public ActionEvent(Object src,int type,String cmd,int modifiers)
src --事件源对象的引用
type --事件类型
cmd --命令字符串
modifiers -- 事件发生时,ALT,CTRL,META 或SHIFT 中的哪一个修改键被按下.
4、获取命令字符串(等同于某一事件源的getText()值)
public String getActionCommand();
5、获取修改键
int getModifiers() --返回值 表示在事件产生时 修改键(ALT,CTRL,SHIFT,META)哪个被按下.
AdjustmentEvent 类
1、描述:一个AdjustmentEvent类的事件由一个滚动条产生.
2、事件类型(5种):
BLOCK_DECREMENT --用户点击滚动条内部减少这个值
BLOCK_INCREMENT --用户点击滚动条内部增加这个值
TRACK --滑块被拖动
UNIT_DECREMENT --滚动条端的按钮被点击减少它的值
UNIT_INCREMENT --滚动条端的按钮被点击增加它的值
3、构造函数(2个)
public AdjustmentEvent(Adjustable src,int id,int type ,int data)
src --事件源的引用
id --等于ADJUSTMENT_VALUE_CHANGED 常量
type --指定事件的类型
data --与事件类型相关的数据
4、方法 Adjustable getAdjustable() 返回事件源,即产生事件的对象.
5、方法 getAdjustmentType() 获得调整事件的类型,即上面的五中常量之一。
6、方法 getValue() 返回调整数量,即返回代表变化了的值.
ComponentEvent 类
1、描述:一个ComponentEvent事件通常在一个组件的大小,位置或者是可视性发生改变时产生.
2、事件类型(4种):
COMPONENT_HIDDEN --组件被隐藏
COMPONENT_MOVED --组件被移动
COMPONENT_RESIZED --组件大小被改变
COMPONENT_SHOWN --组件被显示
3、构造函数
public ComponentEvent(Component src,int type)
src --事件源的引用
type --事件类型,如上.
4、子类包括
ContainerEvent,FocusEvent,KeyEvent,MouseEvent,WindowEvent;
5、public Component getComponent() --返回产生事件的组件.
ContainerEvent 类
1、描述:一个ContainerEvent事件是在容器之中被加入或删除一个组件时产生.
2、事件类型(2种)
COMPONENT_ADDED --容器添加一个组件
COMPONENT_REMOVED --容器删除一个组件
3、构造函数
public ContainerEvent(Component src,int type,Component comp);
src --事件源
type --事件类型
comp --被添加或删除的组件
4、public Container getContainer() --返回事件源,即src.
5、public Component getChild() --返回被加入或删除的组件,即comp.
FocusEvent类
1、描述:一个FocusEvent 是在组件获得或失去输入焦点时发生.
2、事件类型(2种)
FOCUS_GAINED --获得输入焦点
FOCUS_LOST --失去输入焦点
3、构造函数
public FocusEvent(Component src,int type)
public FocusEvent(Component src,int type,boolean temporaryFlag)
src --事件源
type --事件类型
temporaryFlag --焦点事件是否是暂时的,是-true;否-false
4、boolean isTemporary()--判断焦点的改变是否是暂时的.
InputEvent类
1、描述:InputEvent抽象类是ComponentEvent类的子类,同时是一个组件输入事件的父类.
子类包括:
KeyEvent,MouseEvent
2、8 个用来获得和这个事件有关的修改符信息.
ALT_MASK,BUTTON2_MASK,META_MASK,ALT_GRAPH_MASK,BUTTON3_MASK,SHIFT_MASK,BUTTON1_MASK,CTRL_MASK
3、测试是否在事件发生时相应的修改符被按下.
isAltDown()
isAltGraphDown()
isControlDown()
isMetaDown()
isShiftDown()
4、int getModifiers() --返回包含这个事件所有修饰符的标志.
ItemEvent类
1、描述:当一个复选框或者列表框被点击,或菜单项被选择或取消选定时产生.
2、事件类型(2种):
DESELECTED --用户取消选定
SELECTED --用户选择一项
3、ITEM_STATE_CHANGED --表示一个状态的改变
4、构造函数
public ItemEvent(ItemSelectable src,int type ,Object entry,int state)
src --事件源,一个产生事件组件的引用.如:列表或可选择元素
type --事件类型
enter -- ?
state --当前状态
5、Object getItem() --获得一个产生事件的项的引用.(这么别扭!)
6、ItemSelectable getItemSelectable() --获得一个产生事件的ItemSelectable 对象的引用.
7、列表框和可选框是实现了ItemSelectable接口的类.
8、int getStateChange() --返回事件对应的状态(如选择或取消).
KeyEvent 类
1、描述:一个KeyEvent事件是当键盘输入发生时产生.
2、事件类型(3)
KEY_PRESSED --当键盘被按下
KEY_RELEASED --当键盘被释放
KEY_TYPED --当键盘产生一个字符时发生,如:SHIFT键不能产生字符.
3、VK常量(虚拟键值):与修改键(如control,shift或alt)不相关.
VK_0 到 VK_9
VK_A 到 VK_Z
其他
VK_ENTER VK_ESCAPE VK_CANCE VK_UP
VK_DOWN VK_LEFT VK_RIGHT VK_PAGE_DOWN
VK_PAGE_UP VK_SHIFT VK_ALT VK_CONTROL
4、构造函数
KeyEvent(Component src,int type,long when,int modifiers,int code)
KeyEvent(Component src,int type,long when,int modifiers,int code,char ch)
src --事件源
type --事件类型
when --当这个键被按下时,系统时间在when里被传递.
modifiers -- 决定了在键盘事件发生时哪一个修改符被按下.
code --虚拟键值 如:VK_UP,VK_A
ch --如果与虚拟键值相对应的字符存在,则在ch中被传递.否则ch 为 CHAR_UNDEFINED.对于KEY_TYPED 事件,code 将是VK_UNDEFINED.
5、char getKeyChar() --返回输入字符,否则 返回 CHAR_UNDEFINED.
6、int getKeyCode() --返回键值,否则 返回 VK_UNDEFINED.