12.4 修改组件的默认事件处理方式

来源:互联网 发布:波兰计算器c语言 编辑:程序博客网 时间:2024/06/06 19:53

p { margin-bottom: 0.21cm; }a:link { color: rgb(0, 0, 255); }

修改组件的默认事件处理方式即给组件的各个事件添加各个事件的代码

事件侦听器编码的常量java.awt.AWTEvent(从此类找事件编码即想侦测哪一个事件就在里面找)

每一个组件都有的方法

  1. ProcessEvent此方法是处理所有事件的一个方法

  2. ProcessXxxEvent此方法是处理某一个事件的方法

  3. enableEvents此方法是从Component类上继承过来的 此类是用来将某个事件类型的侦听器添加到该组件时,自动启用该事件类型。

  • 只有在一个组件上注册了某种事件的监听对象后,组件才会参数相应的事件对象即默认是组件是没有任何事件的

  • 当一个组件发送了某个事件后组件会调用相应的ProcessEvent(ProcessEvent是处理所有事件的总入口)方法来处理) 默认的ProCessEvent调用ProcessXxxEvent方法Xxx是事件名称ProcessXxxEvent会调用相对应的事件监听器并把事件对象传递给他 如果我们想改变组件的默认事件处理方式需继承组件类并重写方法ProcessEventProcessXxxEvent方法(如果要改变所有默认事件的处理方式可以覆盖) 这样就改变了ProcessXxxevent方法的默认处理方法

  • 调用enableEvents(longeventstoEnable)方法可以再即使没有注册事件监听器的情况下,组件也能够对某些类型的事件进行响应和产生相应的事件对象enableEvents是从Component类中继承的方法 如果不检测鼠标动作事件就算在事件方法里面写了代码 程序也不会执行

  • 修改组件的默认处理事件方式的步骤

    • 继承某个组件类

    • 调用enableEvents方法将某个事件侦听器添加到该组件中

    • 从写事件所对应的事件方法

修改组件默认事件处理方式实例

/**

*继承组件类Button并更改鼠标移动事件的处理方式(给鼠标移动事件写上对应的代码)

**/

publicclassMyButton extendsButton {

privateMyButton friend= null;

publicvoidsetFriend(MyButton friend) {

this.friend= friend;

}

//指定按钮的标题

publicMyButton(String title) {

//TODOAuto-generated constructor stub

super(title);

//绑定鼠标动作事件即是让系统检测鼠标动作事件 如果不检测鼠标动作事件就算在事件方法里面写了代码 程序也不会执行

enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);

}

//处理组件上发生的组件移动事件

@Override

protectedvoidprocessMouseMotionEvent(MouseEvent e) {

//TODOAuto-generated method stub

super.processMouseMotionEvent(e);

setVisible(false);

this.friend.setVisible(true);

}

}