【转】转帖并注释:Java中的事件处理机制--事件监听器的四种实现方式
原文地址:http://blog.sina.com.cn/s/blog_4b650d650100nqws.html
Java中四种事件监听器的实现方式分别为:
- 自身类做为事件监听器
- 外部类作为事件监听器
- 匿名内部类作为事件监听器
- 内部类作为事件监听器.
下面分别描述:
//---------------------------------------------------------------------
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中的事件处理机制--事件监听器的四种实现方式的更多相关文章
- [转]Java事件处理机制- 事件监听器的四种实现方式
原文来自http://stefan321.iteye.com/blog/345221 自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: ...
- Java事件处理机制- 事件监听器的四种实现方式
自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: import javax.swing.*; import java.awt.*; i ...
- Java事件监听器的四种实现方式
自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: import javax.swing.*; import java.awt.*; i ...
- Java中List集合去除重复数据的四种方法
1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < lis ...
- Java中创建(实例化)对象的五种方式
Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...
- Java事件监听的四种实现方式
1.事件对象: 一般继承自java.util.EventObject对象,由开发者自行定义. 2.事件源: 就是触发事件的源头,不同的事件源会触发不同的事件类型. 3.事件监听器: 事件监听器负责监听 ...
- 浅说Java中的反射机制(一)
在学习传智播客李勇老师的JDBC系列时,会出现反射的概念,由于又是第一次见,不免感到陌生.所以再次在博客园找到一篇文章,先记录如下: 引用自java中的反射机制,作者bingoideas.(()为我手 ...
- java中的反射机制在Android开发中的用处
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...
- java中wait/notify机制
通常,多线程之间需要协调工作.例如,浏览器的一个显示图片的线程displayThread想要执行显示图片的任务,必须等待下载线程 downloadThread将该图片下载完毕.如果图片还没有下载完,d ...
随机推荐
- PAT T1010 Lehmer Code
跟1009几乎是同一道题~ #include<bits/stdc++.h> using namespace std; ; int a[maxn]; ]; int r[maxn]; int ...
- python 基础之字典一
字典特点:无序.键唯一 字典的创建 bag = {'cx':'chenxi','gghg':35} print(bag['cx']) 测试 chenxi Process finished with e ...
- Spring源码试读--BeanFactory模拟实现
动机 现在Springboot越来越便捷,如果简单的Spring应用,已无需再配置xml文件,基本可以实现全注解,即使是SpringCloud的那套东西,也都可以通过yaml配置完成.最近一年一直在用 ...
- 匈牙利命名法、Camel命名法与Pascal命名法
Camel命名法:即骆驼式命名法,首字母小写,采用该命名法的名称看起来就像骆驼的驼峰一样高低起伏.Camel命名法有两种形式: 1.混合使用大小写字母,例如runFast 2.单词之间加下划线,例如r ...
- 【PAT甲级】1015 Reversible Primes (20 分)
题意: 每次输入两个正整数N,D直到N是负数停止输入(N<1e5,1<D<=10),如果N是一个素数并且将N转化为D进制后逆转再转化为十进制后依然是个素数的话输出Yes,否则输出No ...
- [USACO 08MAR]土地购买
Description 题库链接 给你 \(n\) 块不同大小的土地.你可分批购买这些土地,每一批价格为这一批中最大的长乘最大的宽.问你买下所有土地的花费最小为多少. \(1\leq n\leq 50 ...
- mysql 命令行个性化设置
通过配置显示主机和用户名 mysql -u root -p --prompt="(\u@\h) [\d]>" 或在配置文件中修改,可在命令行中的目标位置查看 --tee na ...
- Codeforces1307C. Cow and Message
读题,我们知道选1个.选2个的时候是没有冲突的,大于2个的时候就有限制,那么我们观察是否可以把大于2个的情况都转换一下,可以发现,如果有一个串的长度大于2,且出现的次数大于2,那么,组成这个串里必定有 ...
- 「学习笔记」Treap
「学习笔记」Treap 前言 什么是 Treap ? 二叉搜索树 (Binary Search Tree/Binary Sort Tree/BST) 基础定义 查找元素 插入元素 删除元素 查找后继 ...
- Laradock 下安装Beast扩展
laradock/php-fpm/Dockfile ########################################################################## ...