(个人笔记)事件处理机制

java事件处理机制

如何通过键盘或鼠标的控制使Java程序中的功能有响应?

 

java事件处理机制--初步介绍

java事件处理是采取“委派事件模型”。所谓“委派事件模型”是指当事件发生时,产生事件的对象(即事件源),会把此“信息”传递给“事件的监听者”处理的一种方式,而这里所说的“信息”实际上就是java.awt.event事件类库里某个类所创建的对象,我们暂时把它称为“事件的对象”。

    比如:当按下按钮时,就会在按钮触发一个“事件”,程序就会产生一个“事件对象”来表示这个事件,并把这个“事件对象”传递给“事件的监听者”,“事件的监听者”再根据“事件对象”的类型进行相应处理。

为了让“产生事件的对象”[比如按钮]知道要把事件传递给哪一个“事件监听者”,我们必需先把“事件监听者”在“产生事件的对象”注册,这个操作也就是要告知“产生事件的对象”要把事件传递给它。

/**

 * 功能:事件处理机制

 */

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class Window016 extends JFrame implements ActionListener{

       //定义组件

       JPanel mp=null;

       JButton jb1,jb2;

       public static void main(String[] args) {

              Window016 win=new Window016();

       }

       //构造函数

       public Window016(){

              //创建组件

              mp=new JPanel();

              jb1=new JButton("黑色");

              jb2=new JButton("红色");

              //设定布局管理器

             

              //加入组件

              mp.setBackground(Color.black);

              this.add(mp);

              this.add(jb1,BorderLayout.NORTH);

              this.add(jb2,BorderLayout.SOUTH);

             

              //猫类在监听

              Cat mycat1=new Cat();

              jb1.addActionListener(mycat1);

              jb2.addActionListener(mycat1);

              //注册监听

              jb1.addActionListener(this);

              jb2.addActionListener(this);

             

              //指定action命令,用来区分是哪个按钮点击

              jb1.setActionCommand("黑色");

              jb2.setActionCommand("红色");

             

              //JFrame窗体设置

              this.setTitle("事件处理机制");

              this.setSize(400, 300);

              this.setLocationRelativeTo(null);

              this.setVisible(true);

              this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       }

 

       //对事件处理的方法

       public void actionPerformed(ActionEvent e) {

              //判断是哪个按钮被点击

              if(e.getActionCommand().equals("黑色")){

                     System.out.println("点击了黑色按钮");

                     mp.setBackground(Color.BLACK);

              }else if(e.getActionCommand().equals("红色")){

                     System.out.println("点击了红色按钮");

                     mp.setBackground(Color.RED);

              }else{

                     System.out.println("不知道");

              }

       }

}

 

class Cat implements ActionListener{

       public void actionPerformed(ActionEvent arg0) {

              if(arg0.getActionCommand().equals("黑色")){

                     System.out.println("Cat也知道你按下了黑色按钮");

              }else if(arg0.getActionCommand().equals("红色")){

                     System.out.println("Cat也知道你按下了红色按钮");

              }else {

                     System.out.println("Cat也不知道");

              }

       }

}

 

 

java事件处理机制--深入理解

前面提到了几个重要的概念

1、事件源;2、事件;3、事件监听器

这几个概念非常重要,必需要搞清楚。

1、事件源

    事件源是一个产生(或触发)事件的对象,比如前面的JButton的一个对象jb1。当这个事件源对象的某些状态以某种方式发生变化时,就会产生某种类型的事件(一个事件源可能会生成多个不同类型的事件)。如果某个组件(对象)希望得到事件源产生的事件,就需要在这个事件源上注册。

2、事件

事件就是承载事件源状态改变时的信息对象。或者说,事件是事件源事件监听器传输事件源状态信息的载体。在用户与GUI组件进行交互时就会生成事件,比如当鼠标在面板中移动时,就会生成一个鼠标移动事件的对象,而这个对象保存着当前鼠标在面板中位置信息。java.awt.event包和javax.swing.event包中定义了各种事件类型,常见的事件类有:

事件类

说明

ActionEvent

通常在按下按钮,或双击一个列表项或选中某个菜单时发生

AdjustmentEvnet

当操作一个滚动条时发生

ComponentEvent

当一个组件隐藏、移动、改变大小时发送

ContainerEvent

当一个组件从容器中加入或者删除时发生

FocusEvent

当一个组件获得或是失去焦点时发生

ItemEvent

当一个复选框或是列表项被选中时,当一个选择框或选择菜单被选中

KeyEvent

当从键盘的按键被按下,松开时发生

MouseEvent

当鼠标被拖动、移动、点击、按下..

TextEvent

当文本区和文本域的文本发生改变时发生

WindowEvent

当一个窗口激活、关闭、失效、恢复、最小化...

3、事件监听器接口

    事件源产生一个事件,可以传送给事件监听者处理,那么怎样才能编写一个事件监听者呢?

    事件监听者实际上就是一个类,该类实现了某个事件监听器接口、比如前面我们案例中的MyPanel就是一个类,它实现了ActionListener接口,它就可以作为一个事件监听者,对接受到的事件进行处理。

    事件监听器接口有多种,不同的事件监听器接口可以监听不同的事件,一个类可以实现一个事件监听接口,也可以实现多个监听接口,这些接口在java.awt.event和javax.swing.event包中定义。

 

java事件处理机制--总结

总结--事件编程步骤:

1、编写事件处理类(事件监听者)

2、根据需求给事件处理类实现监听器接口

3、在事件处理中重写(实现)其事件处理的函数

4、在事件源类中指定该事件的监听器(响应者)是谁

 

注意事项:

1、java采用委托机制处理事件

2、java中的事件是分类的,比如对窗体事件、鼠标事件、按键事件、操作事件[按按钮]

3、java中一个类要监听某个事件,则必需实现相应的事件监听接口

4、事件监听接口有多种,程序员应当针对不同的情况,实现不同的监听接口,比如监听鼠标事件就应当实现MouseListener;要监听键盘事件,就应当实现KeyListener..

5、在实现监听接口的类(事件监听类/者)中,需要重写处理函数,比如实现了ActionListener接口,就应当重写actionPerformed(ActionEvent e),可以参考前面的事件监听器接口表格

6、在事件源中需要注册事件监听类。否则事件监听类接收不到事件源发生的事件。

 

一个类要实现监听的步骤:

a、实现相应的接口[KeyListener/MouseListener/ActionListener/WindowListener]

b、把接口的处理方法根据需要重新编写(Override)

c、在事件源上注册监听

d、事件传递是靠事件(类)对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值