java中两种添加监听器的策略
/*第一种:将事件的处理委托给其他对象,下面的例子是委托给了MyListener(implements ActionListener)*/
1 import java.applet.Applet;
import java.awt.event.*;
import java.awt.*;
public class ChangeColor extends Applet{//Applet的默认布局为FlowLayout方式
Color myColor;
String str;
Button btn;
Label myLabel;
Panel panBtn;
public void init(){
myColor=Color.black;
str="Change Color";
myLabel=new Label("显示状态!");
btn=new Button("单击变色");
panBtn=new Panel(); panBtn.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));//设置面板的对齐方式
panBtn.setPreferredSize(new Dimension(100,90));
panBtn.setBackground(Color.yellow);
btn.addActionListener(new myListener(this));//为Button添加监听器,通过传递一个ChangeColor的引用来构造自己的监听器
panBtn.add(btn);
panBtn.add(myLabel);
setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));//设置Applet的对齐方式
add(panBtn); addItem("初始化...");
} public void start(){
/*panBtn.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));//设置面板的对齐方式
panBtn.setPreferredSize(new Dimension(100,90));
panBtn.setBackground(Color.yellow);
btn.addActionListener(new myListener(this));
panBtn.add(btn);
panBtn.add(myLabel);
setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));//设置Applet的对齐方式
add(panBtn);*/ //一般常在start()中启动动画或播放声音等的线程, 所以上面的/**/内容最好还是放在init()方法中
addItem("启动...");
} public void stop(){
addItem("停止...");
} public void destroy(){
addItem("准备卸载...");
} public void addItem(String text){
myLabel.setText(text);
System.out.println(text);
} public void paint(Graphics g){
g.setColor(myColor);
g.setFont(new Font("华文彩云", Font.BOLD, 20));
g.drawString(str, 100, 200);
}
}
/*定义自己的监听器类*/
class myListener implements ActionListener{
ChangeColor xy;
public myListener(ChangeColor x){//在这里我们想要调用其他类中的变量
xy=x;
}
public void actionPerformed(ActionEvent e){
if(xy.myColor==Color.black)
xy.myColor=Color.red;
else
xy.myColor=Color.black;
xy.repaint();
}
}
/*第二种:将事件的处理委托给自身对象(自身对象实现了相应的监听器接口)*/
1 import java.awt.*;
import java.awt.event.*;
import java.applet.Applet; public class ChangeColor2 extends Applet implements ActionListener{
Button btn;
Panel pan;
Color myColor;
Label myLabel;
String str;
public void init(){
myColor=Color.black;//初始化文本字体颜色
btn=new Button("单击变色");
btn.addActionListener(this);//将事件的处理委托给自身
pan=new Panel();
pan.setPreferredSize(new Dimension(100, 90));
pan.setBackground(Color.blue);
pan.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
pan.add(btn);
myLabel = new Label("显示状态");
pan.add(myLabel);
str="Change Color!";
add(pan); addItem("初始化程序...");
}
public void start(){
addItem("启动程序...");
}
public void stop(){
addItem("停止程序...");
} public void destory(){
addItem("卸载程序...");
} public void paint(Graphics g){
g.setFont(new Font("华文行楷", Font.BOLD, 30));
g.setColor(myColor);
g.drawString(str, 100, 200);
} public void actionPerformed(ActionEvent e){
if(myColor==Color.black){
myColor=Color.yellow;
}
else{
myColor=Color.black;
}
repaint();
} public void addItem(String tmp){
myLabel.setText(tmp);
System.out.println(tmp);
}
}
java中两种添加监听器的策略的更多相关文章
- JAVA 中两种判断输入的是否是数字的方法__正则化_
JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...
- java中两种类型变量
Java中有两种类型的变量,一种是对象类型,另一种是基础类型(primitive type). 对象类型普遍采用引用的方式,比如 List a = new ArrayList(); List b = ...
- Java中两种实现多线程方式的对比分析
本文转载自:http://www.linuxidc.com/Linux/2013-12/93690.htm#0-tsina-1-14812-397232819ff9a47a7b7e80a40613cf ...
- Cesium 中两种添加 model 方法的区别
概述 Cesium 中包含两种添加 model 的方法,分别为: 通过 viewer.entities.add() 函数添加 通过 viewer.scene.primitives.add() 函数添加 ...
- JSON语言规范与Java中两种解析工具基本使用
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6652250.html 一:JSON语言规范 一言以蔽之:“一个 :一个键值对,一个{}一个对象,一个[]一个 ...
- java中两种单例模式
//懒汉式(线程不安全) class LazySingleton{ private static LazySingleton singleton; private LazySingleton(){} ...
- java中两种发起POST请求,并接收返回的响应内容的方式 (转)
http://xyz168000.blog.163.com/blog/static/21032308201162293625569/ 2.利用java自带的java.net.*包下提供的工具类 代码如 ...
- Java基础-Java中23种设计模式之常用的设计模式
Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...
- Java中23种经典设计模式详解
Java中23种设计模式目录1. 设计模式 31.1 创建型模式 41.1.1 工厂方法 41.1.2 抽象工厂 61.1.3 建造者模式 101.1.4 单态模式 131.1.5 原型模式 151. ...
随机推荐
- VS2013开启滚动条缩略图和双击选中高亮,效果杠杠滴!
1.双击代码或选中代码高亮,用以下插件,反应很灵敏,我安装的是第三个 2.代码编辑器的滚动条缩略图是VS自带的,需要打开菜单----工具----选项,如下图设置: 3.VS默认的选中颜色,需要打开菜单 ...
- [RxJava^Android]项目经验分享 --- 失败重试
简单介绍一下业务逻辑:获取字符串,如果获取失败进行10次重试,超出10次未成功视为失败. 模拟获取字符串场景 代码块 class MsgTool { int count; String getMsg( ...
- javaFx:使用弹出对话框 Alert
javaFx8 自带的对话框非常好用,类似的使用方式如下: /** * 弹出一个通用的确定对话框 * @param p_header 对话框的信息标题 * @param p_message 对话框的信 ...
- ASP.NET导出Excel文件
第一种最常见,并且最简单的方式,直接把GridView导出,导出格式为文本表格形式. protected void btnSaveExcel_Click(object sender, EventArg ...
- Mac 终端 Linux 命令总结(简单命令)
目录操作 命令名 功能描述 使用举例 mkdir 创建一个目录 mkdir dirname rmdir 删除一个目录 rmdir dirname mvdir 移动或重命名一个目录 mvdir dir1 ...
- 【PostgreSQL】PostgreSQL的安装
到了新公司,新公司的数据库是使用PostgreSQL,第一次学习,第一次安装. 开始安装:
- java基础2_运算符,选择语句
算数运算符 + 相加 字符串的连接 正数 - 相减 负数 * 相乘 / 相除 10 / 3 ==> 3 两个操作数中精度最高的是int 结果也是int % ...
- Odoo 二次开发教程(三)-第一个Model及Form、Tree视图
创建完我们的模块,接下来我们就要为我们的模块添加一些对象.今天我们将要创建一个学生对象(tech.student)和一些基本的属性,并将用form和tree视图将其展示出来: 一. 创建tech.st ...
- jquery 购物车飞入效果
github https://github.com/amibug/fly demo https://github.com/amibug/fly
- USACO翻译:USACO 2012 JAN三题(3)
USACO 2012JAN(题目三) 一.题目概览 中文题目名称 放牧 登山 奶牛排队 英文题目名称 grazing climb lineup 可执行文件名 grazing climb lineup ...