原文地址:http://blog.sina.com.cn/s/blog_4b650d650100nqws.html

Java中四种事件监听器的实现方式分别为:

  1. 自身类做为事件监听器
  2. 外部类作为事件监听器
  3. 匿名内部类作为事件监听器
  4. 内部类作为事件监听器.

下面分别描述:

//---------------------------------------------------------------------

1. 自身类作为事件监听器:

  import javax.swing.*;
import java.awt.*;
import java.awt.event.*; //ActionListener:java.awt.event.ActionListener(interface),用来监听Action事件
class ThisClassEvent extends JFrame implements ActionListener
{
JButton btn; public ThisClassEvent()
{
super("Java事件监听机制");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击");
//addActionListerner()原型为:public void addActionListener(ActionListener l)
btn.addActionListener(this);
getContentPane().add(btn); setBounds(200,200,300,160);
setVisible(true);
} /------------------------------
//actionPerformed函数是从ActionListener中继承来的. public void actionPerformed (ActionEvent e)
{
Container c=getContentPane();
c.setBackground(Color.red);
} /------------------------------
public static void main(String args[])
{
new ThisClassEvent();
}
}

2. 外部类作为事件监听器:

   import java.awt.*;
import java.awt.event.*;
import javax.swing.*; class OuterClassEvent extends JFrame
{
JButton btn;
public OuterClassEvent()
{
super("Java事件监听机制");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); //addActionListerner()原型为:public void addActionListener(ActionListener l)
//new OuterClass(this)是OuterClass的实例,而OuterClass是从ActionListener继承来的
btn.addActionListener(new OuterClass(this));
getContentPane().add(btn); setBounds(200,200,300,160);
setVisible(true);
} public static void main(String args[])
{
new OuterClassEvent();
}
} //外部类------------------------------ //OuterClass从ActionListener继承
class OuterClass implements ActionListener
{
OuterClassEvent oce;
public OuterClass(OuterClassEvent oce)
{
this.oce = oce;
} //actionPerformed函数是从ActionListener中继承来的.
public void actionPerformed(ActionEvent e)
{
Container c=oce.getContentPane();
c.setBackground(Color.red);
}
} //---------------------------------------------------------------------

3. 匿名内部类作为事件监听器:

   import java.awt.*;
import java.awt.event.*;
import javax.swing.*; class AnonymousEvent extends JFrame
{
JButton btn; public AnonymousEvent()
{
super("Java事件监听机制");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); //匿名内部类---------------------------
//addActionListerner()原型为:public void addActionListener(ActionListener l)
btn.addActionListener
(
//new ActionListener()声明了ActionListener的一个实例
new ActionListener()
{ //actionPerformed函数是从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();
}
} //---------------------------------------------------------------------

4.内部类作为事件监听器:

    import java.awt.*;
import java.awt.event.*;
import javax.swing.*; class InnerClassEvent extends JFrame {
JButton btn;
public InnerClassEvent() {
super("Java事件监听机制");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); //addActionListerner()原型为:public void addActionListener(ActionListener l)
btn.addActionListener(new InnerClass());
getContentPane().add(btn); setBounds(200,200,300,160);
setVisible(true);
} //内部类---------------------------
//InnerClass继承了ActionListener
class InnerClass implements ActionListener
{ //actionPerformed函数是从ActionListener中继承来的.
public void actionPerformed (ActionEvent e)
{
Container c=getContentPane();
c.setBackground(Color.red);
}
} //------------------------------
public static void main(String args[]) {
new InnerClassEvent();
}
} //---------------------------------------------------------------------

【转】转帖并注释:Java中的事件处理机制--事件监听器的四种实现方式的更多相关文章

  1. [转]Java事件处理机制- 事件监听器的四种实现方式

    原文来自http://stefan321.iteye.com/blog/345221 自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: ...

  2. Java事件处理机制- 事件监听器的四种实现方式

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

  3. Java事件监听器的四种实现方式

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

  4. Java中List集合去除重复数据的四种方法

    1. 循环list中的所有元素然后删除重复   public static List removeDuplicate(List list) { for ( int i = 0 ; i < lis ...

  5. Java中创建(实例化)对象的五种方式

    Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...

  6. Java事件监听的四种实现方式

    1.事件对象: 一般继承自java.util.EventObject对象,由开发者自行定义. 2.事件源: 就是触发事件的源头,不同的事件源会触发不同的事件类型. 3.事件监听器: 事件监听器负责监听 ...

  7. 浅说Java中的反射机制(一)

    在学习传智播客李勇老师的JDBC系列时,会出现反射的概念,由于又是第一次见,不免感到陌生.所以再次在博客园找到一篇文章,先记录如下: 引用自java中的反射机制,作者bingoideas.(()为我手 ...

  8. java中的反射机制在Android开发中的用处

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...

  9. java中wait/notify机制

    通常,多线程之间需要协调工作.例如,浏览器的一个显示图片的线程displayThread想要执行显示图片的任务,必须等待下载线程 downloadThread将该图片下载完毕.如果图片还没有下载完,d ...

随机推荐

  1. c++中的运算符重载operator2(翁恺c++公开课[31-33]学习笔记)

    上一篇operator1中,大概说了下重载的基本用法,接下来对c++中常见的可重载运算符归一下类,说一下它们的返回值,讨论下较为复杂的运算符重载上的坑

  2. 02-07Android学习进度报告七

    今天主要学习了关于Android开发的Date和Time组件部分内容. 首先看TextClock: 可以通过调用:TextClock提供的is24HourModeEnabled()方法来查看,系统是否 ...

  3. STM32L152笔记

    一 段式液晶初始化停在while(LCD_GetFlagStatus(LCD_FLAG_RDY) == RESET)中不出来,网上给的原因和解决办法: 1 也RTC的时钟有关,需要先配置RTC时钟 2 ...

  4. nacos 日志问题 ERR-CODE: [NACOS-0002], Type: [环境问题]

    nacos配置中心配置后,项目启动正常,运行项目也正常,但是总是打印如下日志: 2019-10-11 15:44:09.792 [com.alibaba.nacos.client.Worker.lon ...

  5. Redis的C++与JavaScript访问操作

    上篇简单介绍了Redis及其安装部署,这篇记录一下如何用C++语言和JavaScript语言访问操作Redis 1. Redis的接口访问方式(通用接口或者语言接口) 很多语言都包含Redis支持,R ...

  6. MyEclipse和Eclipse中常用的快捷键

    ##########################快捷键分类速查##########################     *******常用类********[Ctrl+O]   显示类中方法和 ...

  7. Lucene_solr

    1.总结 https://pan.baidu.com/s/1pMAWk0z  密码:ekhx 2.代码 https://pan.baidu.com/s/1nxmTWy1   密码:65ec 3.资料 ...

  8. 「NOWCODER」CSP-S模拟赛第3场

    「NOWCODER」CSP模拟赛第3场 T1 货物收集 题目 考场思路即正解 T2 货物分组 题目 考场思路 题解 60pts 算法:一维 DP 100pts 算法:一维 DP ?线段树 + 单调栈 ...

  9. c++ (翁恺浙大公开课)前言、目录

    c++语言比较复杂,学习起来相对难一些,加之特性繁多,很难全部掌握:特别是工作几年之后,每次温故都有很大的收获,之前不懂的地方随着工作的积累和重新的学习,都会慢慢的解开,当然我现在还是很菜... 之所 ...

  10. 新闻网大数据实时分析可视化系统项目——12、Hive与HBase集成进行数据分析

    (一)Hive 概述 (二)Hive在Hadoop生态圈中的位置 (三)Hive 架构设计 (四)Hive 的优点及应用场景 (五)Hive 的下载和安装部署 1.Hive 下载 Apache版本的H ...