举例说明事件响应

在Swing中,事件响应是通过监听器对象来处理事件的方式实行的,这种方式被称为事件委托模型.

以JButton举例,它内部有一个名为listenerList的链表,在点击按钮时,会产生一个ActionEvent事件,此后内部会依次调用位于listenerList中的每一个actionListener子类实例的actionPerformed方法,这就是事件响应的过程.

当调用JButton的addActionListener方法时, 外界actionListener子类实例的指针就被放入了listenerList中,当按钮点击事件产生时,这个实例的actionPerformed方法就会被调用,从而按钮的点击事件处理就被委托到了actionListener子类实例中进行处理.

实现ActionListener的三种方式

1.实现一个ActionListener子类,再把按钮的事件响应委托给这个子类的实例处理.这种方式并不常用,我在这里列出是为了教学.

2.让界面类实现ActionListener接口,再把事件响应委托给界面类.这种方式适合于处理一些短小简单或要求内聚的事件响应.

3.用匿名类实现ActionListener接口,再把事件委托给这个匿名类的实例.这种方式是Swing事件处理的主流.

方式一:实现一个ActionListener子类

// 实现了ActionListener接口的类

public class Button3ActionListener implements ActionListener{

public void actionPerformed(ActionEvent e) {

String buttonText=((JButton)e.getSource()).getText();

System.out.println("你按下了" + buttonText);

}

}

// 给按钮三添加事件处理

button3.addActionListener(new Button3ActionListener());

方式二:让界面类实现ActionListener接口

public class MyFrame extends JFrame implements ActionListener{

public MyFrame() {

....

button2.addActionListener(this);

}

/**

* 按钮二的事件响应在此

*/

public void actionPerformed(ActionEvent e) {

if(e.getSource()==button2){

showMsg("你按下了" + button2.getText());

}

}

}

方式三:用匿名类的方式添加事件响应

button1 = new JButton("按钮一");

button1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

showMsg("你按下了" + button1.getText());

}

});

posted on 2008-03-03 22:49 和风细雨 阅读(3489) 评论(0)  编辑  收藏 所属分类: Swing

java响应事件_Swing中添加事件响应的三种处理方式说明相关推荐

  1. 在gridview或datagrid中添加汇总行的三种实现方式

    1. 在SQL语句中使用rollup,直接在返回的计算结果中就包含合计值,此种方法不需要多少代码来单独计算, 但要求使用sql server或oracle 8i数据库才支持rollup语法. 2. 在 ...

  2. PHP中添加HTML代码的三种方法(printEND)

    php中添加HTML代码,就是php类型的文件中添加html代码~ 第一种是在HTML中加PHP. 大段大段的html代码中,在各个需要执行php的地方<?php .... ?> 比如 l ...

  3. cocos中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)

    CCLabelTTF CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建..这意味着setString 和创建一个新的标签一样慢. 这个类使 ...

  4. cocos2d-x 中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas

    在 cocos2d-x 中有三个类可以在层或精灵中添加文字: LabelTTF LabelBMFont LabelAtlas LabelTTF 直接支持使用 TTF 字库,可以支持全部的中文,但是效率 ...

  5. java获取小程序中用户的unionId的三种方式

    前提条件: 想要获取unionId,必须几个小程序或者公众号在同一个主体之下,要不然没有unionId,只会生成用户的openid,可登陆下面这个微信官方平台查看 https://open.weixi ...

  6. java c3p0 配置文件_【c3p0】 C3P0的三种配置方式以及基本配置项详解

    数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. ---------------------------------------- ...

  7. 在VS工程中添加lib库的三种方法

    方法1:  通过设置工程配置来添加lib库. A.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路 ...

  8. Java——遍历List过程中添加和删除元素的问题(亲测第二种)

    遍历元素最常见的三种方法: //第三种遍历[利用迭代器]     private static void loopList3(List<String> strList) {         ...

  9. JS标签的获取、js curd、事件的四要素、事件的三种注册方式和区别

    1.掌握html和body标签的两种特殊获取方式(*****)---(重点)         html: document.documentElement body: document.body le ...

最新文章

  1. 易遭黑客利用,慎用免费的网站SSL证书!!!
  2. python爬虫能干什么-Python爬虫能做什么
  3. Rectangle Area
  4. Intel Realsense C/C++ 转 python rs-align 使用深度颜色映射介绍空间流对齐的概念(转不起来,缺少信息)
  5. 2小时撸完代码之后,所有程序员都逃不过的一天... (强共鸣)
  6. java泊松分布_Java中利用Math.random()产生服从泊松分布的随机数
  7. 2018年6月3号(线段树(3))
  8. 莫陷入点击和评论陷阱
  9. 【Java】俄罗斯方块Java版
  10. Rtf(富文本格式)解析
  11. python优化网站_利用python做seo优化
  12. 实战分享:如何通过黑帽SEO快速获取庆余年这类电视剧流量
  13. 安卓设备脱离pc自动化测试,Termux模拟器下python+uiautomator2的环境设置。本人亲测,踩坑总结。
  14. 0-c语言入门这一篇就够了-学习笔记(一万字)
  15. 用pandas生成excel文件示例,并调整excel的格式或样式
  16. 不经意传输协议-密码学
  17. AI产品经理数据模型设计文档(简版)
  18. 当你程序运行出现错时~
  19. Vmware相关技巧
  20. 分数问题的各种语言描述

热门文章

  1. c++高级编程(第4版).pdf_《C++并发编程实战第2版》第四章:同步并发操作(1/4)
  2. python有强大吗_python有多强大
  3. 人月神话贯彻执行_DNF:希洛克团本真有那么难吗?没有神话都不够格进团?_电竞...
  4. Html img 标签
  5. tar:文件打包归档
  6. ip addr 相关操作
  7. Python基础--列表
  8. 自己实现苹果安装app动画
  9. 更易型算法(Manipulating Algorithms)
  10. Python 基础算法(1) - 算法简介