`
没线的蓝色风筝
  • 浏览: 5619 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类

java总结------事件机制与监听器

    博客分类:
  • java
阅读更多
事件源:一个产生事件的对象,当这个源对象的某些状态以某种方式发生变化时,就会发生某种类型的事件(一个事件源可能
会生成多个不同类型的事件)。如果某个对象(事件监听者)希望得到事件源产生的事件就需要在这个事件源上注册。
事件:承载事件源状态改变时的信息对象。用户与GUI组件进行交互时就会发生事件
比如当鼠标在面板中移动时,就会生成一个鼠标移动事件的对象,而这个对象保存着当前鼠标在面板中位置信息
事件监听器:实际上就是一个类,该类实现了某个事件监听器接口,不同的事件监听器接口可以监听不同的事件一个类可以实现一个事件监听接口,也可以实现多个监听接口
补充:事件可以是鼠标事件、键盘事件、触摸事件或者鼠标移动事件等;事件源就是产生事件的组件,事件监听器就是事件源产生
事件时响应的接口
举个-
例子1:轿车剧烈震动时会自动报警(在开启报警的情况下),在这里事件源就是车子,因为是车子产生震动的,所以事件是震动
(或者说是报警事件),事件监听器是报警器。
例子2:按钮被我按下了,在这里我是属于外界,是我促使干预了按钮才让按钮产生了click事件,所以按钮是事件源,click是
事件,下面哪个接口响应了就是事件监听器。监听器类一般系统都自带了,如果要用的话implements一下就行。
谁直接产生事件谁就是事件源,而对本次事件产生反应的就是事件监听器 。


事件处理步骤
① 创建事件监听器。
② 给事件源注册事件监听器。
③ 在事件处理方法中做自己要做的事。


自身类作为事件监听器
外部类作为事件监听器
匿名内部类作为事件监听器
内部类作为事件监听器
自身类作为事件监听器:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
*Java事件处理机制:自身类作为事件监听器
*/
class ThisClassEvent extends JFrame implements ActionListener{
    JButton btn;

    public ThisClassEvent(){
        super("Java事件监听机制");
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        btn=new JButton("点击");
        btn.addActionListener(this);
        getContentPane().add(btn);

        setBounds(200,200,300,160);
        setVisible(true);
    }

    /**************************************/
    public void actionPerformed (ActionEvent e){
        Container c=getContentPane();
        c.setBackground(Color.red);
    }
    /**************************************/

    public static void main(String args[]){
        new ThisClassEvent();
    }
}

外部类作为事件监听器:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
*Java事件处理机制:外部类作为事件监听器
*/
class OuterClassEvent extends JFrame{
    JButton btn;

    public OuterClassEvent(){
        super("Java事件监听机制");
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        btn=new JButton("点击");
        btn.addActionListener(new OuterClass(this));
        getContentPane().add(btn);

        setBounds(200,200,300,160);
        setVisible(true);
    }

    public static void main(String args[]){
        new OuterClassEvent();
    }
}

/*外部类*********************************/
class OuterClass implements ActionListener{
    OuterClassEvent oce;

    public OuterClass(OuterClassEvent oce){
        this.oce = oce;
    }

    public void actionPerformed(ActionEvent e){
        Container c=oce.getContentPane();
        c.setBackground(Color.red);
    }
}
/**************************************/
匿名内部类作为事件监听器:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
*Java事件处理机制:匿名内部类作为事件监听器
*/
class AnonymousEvent extends JFrame{
    JButton btn;

    public AnonymousEvent(){
        super("Java事件监听机制");
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        btn=new JButton("点击");
        /*匿名内部类******************************/
        btn.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    Container c=getContentPane();
                    c.setBackground(Color.red);
                }
            }
        );
        /***************************************/
        getContentPane().add(btn);

        setBounds(200,200,300,160);
        setVisible(true);
    }

    public static void main(String args[]){
        new AnonymousEvent();
    }
}
内部类作为事件监听器:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
*Java事件处理机制:内部类作为事件监听器
*/
class InnerClassEvent extends JFrame{
    JButton btn;

    public InnerClassEvent(){
        super("Java事件监听机制");
        setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        btn=new JButton("点击");
        btn.addActionListener(new InnerClass());
        getContentPane().add(btn);

        setBounds(200,200,300,160);
        setVisible(true);
    }

    /*内部类*********************************/
    class InnerClass implements ActionListener{
        public void actionPerformed (ActionEvent e){
            Container c=getContentPane();
            c.setBackground(Color.red);
        }
    }
    /**************************************/

    public static void main(String args[]){
        new InnerClassEvent();
    }
}


分享到:
评论

相关推荐

    21天学通Java-由浅入深

    277 14.5.2 创建按钮 277 14.5.3 按钮动作事件 278 14.6 Swing中的事件 280 14.6.1 事件简介 280 14.6.2 同一个事件源注册多个监听器 280 14.6.3 同一个监听器注册给多个事件源 282 14.6.4 窗体获取和失去焦点事件 ...

    JAVA 面向对象程序设计第11章 Swing高级应用.pptx

    11.3.2 事件和事件监听器 ; 11.3.2 事件和事件监听器 ; 11.3.2 事件和事件监听器 ; 11.3.2 事件和事件监听器 ; 11.3.2 事件和事件监听器 ; 11.3.2 事件和事件监听器 ;11.3.3 学生实践练习;...

    免费超全面的Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结

    java基础 一、仓库说明 Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结。 2、分类文档 JVM虚拟机 JVM特点,结构与执行周期 ...过滤器、监听器、拦截器,应用详解 Servlet 集成 C3P0

    JAVA基础课程讲义

    目 录 第一章 JAVA入门 10 计算机语言发展史 10 机器语言 10 汇编语言 10 高级语言 10 其他高级语言 11 ...事件监听器常见的定义形式 233 AWT其他组件 233 菜单的实现 233 特点 233 代码示例和效果 233

    Java学习笔记-个人整理的

    {13.8}java.util.Date与java.sql.Date比较}{200}{section.13.8} {13.9}Meta Data}{201}{section.13.9} {13.10}可滚动结果集}{201}{section.13.10} {13.11}Procedure}{201}{section.13.11} {14}xml}{204}{...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    2.2.7 Eclipse中的源代码编辑器 26 2.2.8 Eclipse的设置窗口 26 2.2.9 Eclipse中的其他视图 27 2.3 如何使用Eclipse 28 2.3.1 在Eclipse中创建自己的第一个项目 28 2.3.2 在Eclipse中编写HelloWorld程序 29 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    2.2.7 Eclipse中的源代码编辑器 26 2.2.8 Eclipse的设置窗口 26 2.2.9 Eclipse中的其他视图 27 2.3 如何使用Eclipse 28 2.3.1 在Eclipse中创建自己的第一个项目 28 2.3.2 在Eclipse中编写HelloWorld程序 29 ...

    java版飞机大战源码-Rockira.github.io:Rockira.github.io

    :microscope:监听器和过滤器 :ring:数据库 MySQL 索引、锁机制 事务特性、隔离级别 MySQL调优与最佳实践 :t-shirt:JDBC :ribbon:AJAX :cooked_rice:JavaWeb小项目 :hamburger:Hibernate :page_facing_up:Struts2 :...

    Spring-Reference_zh_CN(Spring中文参考手册)

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的...

    spring chm文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    springboot知识点整理

    7.1.3 编写事件监听机制 132 8 Spring Boot自定义starters 136 8.1 概述 136 8.2 步骤 137 9 更多Springboot整合示例 144 10 Spring Boot与缓存 145 10.1 JSR107缓存规范 145 10.2 Spring的缓存抽象 146 10.2.1 基本...

    Spring中文帮助文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring API

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring 2.0 开发参考手册

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring.3.x企业应用开发实战(完整版).part2

    12.2.4 添加Hibernate事件监听器 12.2.5 使用原生Hibernate API 12.2.6 使用注解配置 12.2.7 事务处理 12.2.8 延迟加载的问题 12.3 在Spring中使用myBatis 12.3.1 配置SqlMapClient 12.3.2 在Spring配置myBatis ...

    Spring3.x企业应用开发实战(完整版) part1

    12.2.4 添加Hibernate事件监听器 12.2.5 使用原生Hibernate API 12.2.6 使用注解配置 12.2.7 事务处理 12.2.8 延迟加载的问题 12.3 在Spring中使用myBatis 12.3.1 配置SqlMapClient 12.3.2 在Spring配置myBatis ...

    ROS机器人操作系统入门 Tutorials CN版 20150726

    我们已经能在Python和C++中顺利运行,同时添加有Lisp、Octave和Java语言库。 测试简单:ROS有一个内建的单元/组合集测试框架,称为“rostest”。这使得集成调试和分解调试很容易。 扩展性:ROS适合于大型实时系统与...

Global site tag (gtag.js) - Google Analytics