【转】转帖并注释: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 ...
随机推荐
- nginx日志模块与HTTP过滤模块与sub模块修改返回内容
日志格式使用指令 指令介绍 Syntax: log_format name [escape=default|json|none] string ...; Default: log_format com ...
- 凤凰系统(Phoenix OS)PC版安装,电脑上体验功能丰富的安卓系统
PC版(X86版)ISO镜像下载地址:http://www.phoenixos.com/download_x86 下载完成后,可按照官方给出的安装教程进行安装. 凤凰系统帮助中心:http://www ...
- LeetCode 725. Split Linked List in Parts(分隔链表)
题意:将原链表分隔成k个链表,要求所有分隔的链表长度差异至多为1,且前面的链表长度必须大于等于后面的链表长度. 分析: (1)首先计算链表总长len (2)根据len得到分隔的链表长度要么为size, ...
- redhat 7.6 网络配置
网卡配置目录 /etc/sysconfig/network-scripts/ 关闭网卡 $$ 打开网卡 ifdown ensp8 && ifup ensp8 重启网卡服务 servic ...
- Servlet简单的登陆窗口
web.xml配置: jsp代码: 注意:action书写的是为这次登陆做处理类的别名,method就是请求的方式 Get请求方式没有请求实体 //如果只是看效果就光写一下service方法就行了 p ...
- 「ZJOI2013」K大数查询
「ZJOI2013」K大数查询 传送门 整体二分,修改的时候用线段树代替树状数组即可. 参考代码: #include <cstdio> #define rg register #defin ...
- django 模版内置的过滤器
一.add 将传进来的参数添加到原来的值上面.这个过滤器会尝试将“值”和“参数”转换成整形然后进行相加.如果转换成整形过程中失败了,那么将会将“值”和“参数”进行拼接.如果是字符串,那么会拼接成字符串 ...
- 键盘类型UIKeyboardType
UITextField.UITextView等能够调出系统键盘的控件,通过下面这个属性可以控制弹出键盘的样式: self.priceTextField.keyboardType = UIKeyboar ...
- 普通用户切换不到root用户--权限更改
https://blog.csdn.net/lianjoke0/article/details/82598149 [root@java133 ~]# ll /etc/passwd -rw-r--r-- ...
- VS2017+EF6+MySQL8.0配置(.Net Framework 4.5)
开发环境Vs2017 运行环境:.Net Framework 4.5(win7专业版 64位) 1.下载安装mysql数据库版本:mysql-8.0.19-winx64 ----数据库版本貌似跟My ...