美文网首页
《Oracle Java SE编程指南》23-08:事件监听

《Oracle Java SE编程指南》23-08:事件监听

作者: AT阿宝哥 | 来源:发表于2020-05-11 13:15 被阅读0次

    内容导航

    • 前言

    2、事件处理快速入门

    Swing事件监听快速入门

    GUI事件监听器

    解释Java中的事件授权处理模型
    了解java.awt.event包
    了解Java中常用的事件类型
    在Swing编程中实现事件处理

    事件处理

    对于采用了图形用户界面的程序来说,事件控制是非常重要的;
    到目前为止,我们编写的图形用户界面程序都仅仅只是完成了界面,而没有任何实际的功能,要实现相应的功能,必须进行事件处理;
    用户与GUI组件进行交互就会发生事件,如:按下一个按钮、用键盘输入一个字符、点击鼠标等等;
    当前我们要关注的并不是“事件是如何产生的”,而是讨论当发生事件后,我们应当“如何处理之”。

    事件处理模型

    Java中,事件处理的基本思路如下:
    一个源(事件源)产生一个事件(事件对象)并把它送到监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接受,监听器将处理这些事件;
    一个事件源必须注册监听器以便监听器可以接受关于一个特定事件的通知。

    事件源与事件

    当在一个图形用户界面点击鼠标或者按下键盘时,都是针对于具体组件而发生的动作,如:使用鼠标点击某个按钮;按下键盘向文本框输入内容等等;
    我们把动作所操纵的对象称为事件源,请注意:事件源一定是指某个组件;
    当针对于事件源发生动作时,就会产生一个事件。

    监听器与监听器接口

    针对每一类型的事件,都有与之相对应的监听器,用于监听事件的发生;
    在Java中,监听器由一系列接口来提供;
    实际上,事件监听器就是实现了事件监听接口的类,监听器不断监听事件源的动作,当事件源产生一个事件后,监听器接收到事件源的通知,就调用特定的方法,以执行指定的动作。
    特定的事件监听器只对特定的事件感兴趣。

    java.awt.event包

    java.awt.event包中包含了一系列与事件处理相关的类和接口,其中包括:监听器接口,事件对象和事件适配器等;
    一般来说,编写图形用户界面程序都必须显式地导入此包;
    每种事件监听器接口都是以类似于
    XxxListener
    的形式来命名的,如:ActionListener、MouseListener、ItemListener等;

    ActionListener接口

    按钮被点击是图形编程中最普遍的事件,我们经常要处理;
    ActionListener被称为活动监听器,一般用来监听按钮的点击事件;
    该接口中包含有一个抽象方法,原型如下:
    public void actionPerformed(ActionEvent ae);
    实现该监听器接口必须重写上面的方法。

    事件处理步骤3:事件源注册监听器 (代码)

    事件的类型

    实际上,事件是区分类型的,如:操作鼠标时会产生鼠标事件,使用键盘输入字符时会产生键盘事件,窗体打开或关闭时会产生窗体事件等等;
    对于不同类型的事件会有不同类型的监听器与之对应;
    java.awt.event包中包含了一系列监听器接口,分别用来处理不同类型的事件。

    AWT事件类的继承体系图

    AWT事件类型(列表)

    常用监听器1:ActionListener

    ActionListener可能是使用得最多的监听器,与之对应的事件类型是ActionEvent,一般在鼠标点击某个按钮时会产生该事件;
    该接口只包含有一个抽象方法,其原型如下:

    public interface ActionListener
    {
    public void actionPerformed(ActionEvent ae);
    }

    其实现类必须重写actionPerformed方法,当事件发生时将调用该方法。

    常用监听器2:KeyListener

    KeyListener专门用来处理键盘事件,其对应事件类型是KeyEvent;
    该接口中包含有三个抽象方法,分别在不同的时刻被调用,原型如下:
    public interface KeyListener
    {
    /按下键盘上的某键时调用/
    public void keyPressed(keyEvent ke);
    /释放键盘上的某键时调用/
    public void keyReleased(KeyEvent ke);
    /输入某个字符时调用/
    public void keyTyped(KeyEvent ke);
    }

    常用监听器3:MouseListener

    操作鼠标时会产生鼠标事件MouseEvent,而MouseListener用来处理鼠标的动作,其原型:
    public interface MouseListener {
    /鼠标按钮在某个组件上按下时调用/
    public void mousePressed(MouseEvent me);
    /鼠标按钮在某个组件上释放时调用/
    public void mouseReleased(MouseEvent me);
    /鼠标按钮在某个组件上点击(按下并释放)时调用/
    public void mouseClicked(MouseEvent me);
    /鼠标进入到某个组件的范围之内时调用/
    public void mouseEntered(MouseEvent me);
    /鼠标离开某个组件的范围之外时调用/
    public void mouseExited(MouseEvent me);
    }

    常用监听器4:MouseMotionListener

    MouseMotionListener是专门处理鼠标运动事件的,比如将鼠标进行移动和拖动的时候,该接口的原型如下:
    public interface MouseMotionListener
    {
    /在某个组件上移动鼠标时调用/
    public void mouseMoved(MouseEvent me);

    /*在某个组件上拖动(按下键并移动)鼠标时调用*/
    public void mouseDragged(MouseEvent me);
    

    }

    常用监听器5:ItemListener

    对于象下拉列表、单选按钮、复选按钮这些有选项的组件而言,当它们的选项发生改变的时候,都会产生选项事件ItemEvent,如果需要处理这样的事件,就用到了ItemListener,其原型:
    public interface ItemListener
    {
    /当选项的状态(选择或取消)发生改变时调用/
    public void itemStateChanged(ItemEvent ie);
    }

    常用监听器6:WindowListener

    操作窗口时会产生窗口事件WindowEvent,其对应监听器是WindowListener,原型如下:
    public interface WindowListener {
    /窗口被激活时调用/
    public void windowActivated(WindowEvent we);
    /窗口被禁止时调用/
    public void windowDeactivated(WindowEvent we);
    /窗口被关闭时调用/
    public void windowClosed(WindowEvent we);
    /窗口正在关闭时调用/
    public void windowClosing(WindowEvent we);
    /窗口最小化时调用/
    public void windowIconified(WindowEvent we);
    /窗口恢复时调用/
    public void windowDeiconified(WindowEvent we);
    /窗口打开时调用/
    public void windowOpened(WindowEvent we);
    }

    常用监听器7:FocusListener

    某个组件得到/丢失焦点时将产生焦点事件FocusEvent,可以使用FocusListener来处理这样的事件,该接口原型:
    public interface FocusListener
    {
    /某个组件获得焦点时调用/
    public void focusGained(FocusEvent fe);

    /*某个组件失去焦点时调用*/
    public void focusLost(FocusEvent fe);
    

    }

    事件对象

    Java中的所有事件都被封装在事件对象中,所有事件对象皆派生自EventObject类;
    对于不同的事件类型会有不同的事件对象,它们都以类似于XxxEvent的方式命名,如:ActionEvent、MouseEvent等等;
    事件对象中包含有事件发生时的相关信息(即事件触发时产生的一些数据),会被事件底层机制传递到事件处理函数中;
    实际上事件对象就是事件处理函数中被传递进来的参数,如果在处理事件的过程中需要使用到相关的某些数据,可以从事件对象中获取。

    java.awt.event.MouseEvent的常用方法

    int getX()
    int getY()
    int getButton()
    int getClickCount()

    总结

    与事件处理相关的三个概念:事件源、监听器、事件对象;
    在程序中要进行事件处理的话,需要导入java.awt.event包;
    事件处理的三个步骤:
    确定事件源和监听器类型
    实现监听器接口
    将事件源注册到监听器
    事件处理的三种语法实现形式:
    内部类的实现方式
    匿名类的实现方式
    直接实现的方式


    🚀Java SE最佳学习路线图(2020最新版)


    👍👍👍👍👍👍<br />🌹GET!童鞋,你好棒呀,给我们一起点个赞。💪<br />👏👏👏👏👏👏


    💰我想了解职业晋升路线和课程学习指南

    💰我想了解IT/互联网行业职业规划

    💰我想了解世界编程语言排行榜

    💰我想做2000+枚大猿的朋友

    相关文章

      网友评论

          本文标题:《Oracle Java SE编程指南》23-08:事件监听

          本文链接:https://www.haomeiwen.com/subject/ovkunhtx.html