p { margin-bottom: 0.21cm; }a:link { color: rgb(0, 0, 255); }
修改组件的默认事件处理方式即给组件的各个事件添加各个事件的代码
事件侦听器编码的常量 java.awt.AWTEvent( 从此类找事件编码 即想侦测哪一个事件就在里面找 )
每一个组件都有的方法
-
ProcessEvent 此方法是处理所有事件的一个方法
-
ProcessXxxEvent 此方法是处理某一个事件的方法
-
enableEvents 此方法是从 Component 类上继承过来的 此类是用来将某个事件类型的侦听器添加到该组件时,自动启用该事件类型。
-
只有在一个组件上注册了某种事件的监听对象后,组件才会参数相应的事件对象 即默认是组件是没有任何事件的
-
当一个组件发送了某个事件后 组件会调用相应的ProcessEvent(ProcessEvent 是处理所有事件的总入口 ) 方法来处理 ) 默认的ProCessEvent 调用ProcessXxxEvent 方法 Xxx 是事件名称 ProcessXxxEvent 会调用相对应的事件监听器 并把事件对象传递给他 如果我们想改变组件的默认事件处理方式 需继承组件类 并重写方法ProcessEvent 或ProcessXxxEvent 方法( 如果要改变所有默认事件的处理方式 可以覆盖 ) 这样就改变了ProcessXxxevent 方法的默认处理方法
-
调用enableEvents(long eventstoEnable) 方法可以再即使没有注册事件监听器的情况下,组件也能够对某些类型的事件进行响应和产生相应的事件对象enableEvents 是从 Component 类中继承的方法 如果不检测鼠标动作事件 就算在事件方法里面写了代码 程序也不会执行
-
修改组件的默认处理事件方式的步骤
-
继承某个组件类
-
调用 enableEvents 方法 将某个事 件侦听器添加到该组件中
-
从写事件所对应的事件方法
-
修改组件默认事件处理方式实例
/**
* 继承组件类 Button 并更改鼠标移动事件的处理方式(给鼠标移动事件写上对应的代码)
* */
public class MyButton extends Button {
private MyButton friend = null ;
public void setFriend(MyButton friend) {
this . friend = friend;
}
// 指定按钮的标题
public MyButton(String title) {
// TODO Auto-generated constructor stub
super (title);
// 绑定鼠标动作事件 即是让系统检测鼠标动作事件 如果不检测鼠标动作事件 就算在事件方法里面写了代码 程序也不会执行
enableEvents(AWTEvent. MOUSE_MOTION_EVENT_MASK );
}
// 处理组件上发生的组件移动事件
@Override
protected void processMouseMotionEvent(MouseEvent e) {
// TODO Auto-generated method stub
super .processMouseMotionEvent(e);
setVisible( false );
this . friend .setVisible( true );
}
}