GUI编程笔记(java)05:GUI事件监听机制原理和举例说明
1.事件监听机制:
A:事件源 事件发生的地方
B:事件 就是要发生的事情
C:事件处理 就是针对发生的事情做出的处理方案
D:事件监听 就是把事件源和事件关联起来
2.举例:人受伤事件。
事件源:人(具体的对象)
Person p1 = new Person("张三");
Person p2 = new Person("李四");
事件:受伤
interface 受伤接口 {
一拳();
一脚();
一板砖();
}
事件处理:
受伤处理类 implements 受伤接口 {
一拳(){ System.out.println("鼻子流血了,送到卫生间洗洗"); }
一脚(){ System.out.println("晕倒了,送到通风处"); }
一板砖(){ System.out.println("头破血流,送到太平间"); }
}
事件监听:
p1.注册监听(受伤接口)
2.窗体关闭案例代码:
这里事件源是:窗体
事件:对窗体的处理
事件处理:关闭窗体System.exit(0);
事件监听:
package cn.itcast_02; import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener; public class FrameDemo {
public static void main(String[] args) {
// 创建窗体对象
Frame f = new Frame("窗体关闭案例"); // 设置窗体属性
f.setBounds(400, 200, 400, 300); // 让窗体关闭
//事件源
//事件:对窗体的处理
//事件处理:关闭窗口(System.exit(0));
//事件监听
f.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
} @Override
public void windowIconified(WindowEvent e) {
} @Override
public void windowDeiconified(WindowEvent e) {
} @Override
public void windowDeactivated(WindowEvent e) {
} @Override
public void windowClosing(WindowEvent e) {
System.exit(0);
} @Override
public void windowClosed(WindowEvent e) {
} @Override
public void windowActivated(WindowEvent e) {
}
}); // 设置窗体可见
f.setVisible(true);
}
}
这时候我们点击出现的窗口的关闭按钮就会关闭窗口;但是感觉上还是不够简化,很多行代码是多余的,需要优化一下:
3.使用适配器进行简化上面的代码:
(1)这里我们通过一个案例说明一下:适配器设计模式
首先我们定义一个用户数据操作接口:UseDao
package cn.itcast_03; /*
* 针对用户操作的四种功能
*/
public interface UserDao {
public abstract void add(); public abstract void delete(); public abstract void update(); public abstract void find();
}
接着我们定义一个适配器抽象类UseAdapter,实际上就是让UseAdapter实现UserDao接口的方法,但是所有的方法体为空,代码如下:
package cn.itcast_03;
public abstract class UserAdapter implements UserDao {
@Override
public void add() {
}
@Override
public void delete() {
}
@Override
public void update() {
}
@Override
public void find() {
}
}
现在我们知道实际上适配器帮我们做了缓冲,他帮忙实现所有的方法,但是方法体全是空,接下来我们在定义一个具体的方法实现类继承自这个抽象适配器类UserAdapter,这里我们定义UserDaoImpl2类,如下:
package cn.itcast_03;
public class UserDaoImpl2 extends UserAdapter {
@Override
public void add() {
System.out.println("添加功能");
}
}
接下来我们编写一个测试类UserDaoDemo类,如下:
package cn.itcast_03; /*
* 问题:
* 接口(方法比较多) -- 实现类(仅仅使用一个,也得把其他的实现给提供了,哪怕是空实现)
* 太麻烦了。
* 解决方案:
* 接口(方法比较多) -- 适配器类(实现接口,仅仅空实现) -- 实现类(用哪个重写哪个)
*/
public class UserDaoDemo {
public static void main(String[] args) {// 我没有说我们需要四种功能都实现啊。
UserDao ud2 = new UserDaoImpl2();
ud2.add();
}
}
运行结果如下:

(2)接下来使用适配器改进窗体关闭的代码:
package cn.itcast_02; import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener; public class FrameDemo {
public static void main(String[] args) {
// 创建窗体对象
Frame f = new Frame("窗体关闭案例"); // 设置窗体属性
f.setBounds(400, 200, 400, 300); // 让窗体关闭
//事件源
//事件:对窗体的处理
//事件处理:关闭窗口(System.exit(0));
//事件监听 //用适配器类改进
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}); // 设置窗体可见
f.setVisible(true);
}
}
GUI编程笔记(java)05:GUI事件监听机制原理和举例说明的更多相关文章
- Java中的事件监听机制
鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...
- Java 中的事件监听机制
看项目代码时遇到了好多事件监听机制相关的代码.现学习一下: java事件机制包含三个部分:事件.事件监听器.事件源. 1.事件:继承自java.util.EventObject类,开发人员自己定义. ...
- 4.JAVA之GUI编程事件监听机制
事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...
- java Gui编程 事件监听机制
1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式: 1. 命令交互方式 图书管理系统 ...
- JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件
JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...
- 创建图形用户界面GUI和事件监听机制的简单实现(java)
创建图形化界面 1.创建Frame窗体 2.对窗体进行基本设置 比如:大小.位置.布局 3.定义组件 4.将组建通过窗体添加到窗体中 5.让窗体显示,通过setVisib ...
- JAVA事件监听机制的实现
今天学习了java的事件编程机制,略有体会,先在此记下心得. 第一,首先明确几个概念. 事件源:一个产生或者触发事件的对象.事件:承载事件源状态改变时的信息对象.事件监听器接口:实际上就是一个类,该类 ...
- JAVA事件监听机制学习
//事件监听机制 import java.awt.*; import java.awt.event.*; public class TestEvent { public static void mai ...
- Java swing(awt):事件监听机制的实现原理+简单示例
(1)实现原理 事件监听机制的实现: 参考图:事件模型_ActionEvent 为了节省资源,系统无法对某个事件进行实时的监听.故实现的机制是当发生某个事件后,处理代码将被自动运行,类似钩子一般.(回 ...
随机推荐
- 3G? 2G? 2.5G? 4G? 与 WIFI, GPRS,CDMA 3G无线上网
首先说说无线上网有哪几种形式? WIFI, GPRS, CDMA 3G无线上网 1>wifi全称wireless fidelity,是当今使用最广的一种无线网络传输技术.实际上就是把有线网络信号 ...
- win7 任务计划 任务映像已损坏或篡改(异常来自HRESULT:0x80041321)
转自win7 任务计划 任务映像已损坏或篡改(异常来自HRESULT:0x80041321) 请这样操作: 1. 以管理员身份运行命令提示符并执行命令 chcp 437 schtasks /query ...
- Maven安装与更新
Maven是Apache组织中的一个颇为成功的开源项目,主要服务于基于Java平 台的项目构建.依赖管理和项目信息管理: 1) Maven是跨平台的,在Windows.Linux和Mac上都可以使用: ...
- Swift 中的静态方法继承
Base and Derived Classes: class BaseClass{ class func staticMethod(){ println("BaseClass.static ...
- ScrollView中嵌套两个ListView
做的项目中要使用两个ListView在同一个页面上下显示,因为数据源不同,不能通过在Adapter中设置标志位去区分显示,最后只能硬着头皮做一个ScrollView嵌套两个ListView,但按正常情 ...
- Android 使用LinearLayout.getChildAt(i)获取一个线性布局的view,并实现content中实现方法
1.定义接口content的方法,如ok,cancle; 2.在View的处理类myview中实现content的方法. 3.通过contently.getChildAt(i)的方法获得View v; ...
- 【CF】142 Div.1 B. Planes
SPFA.注意状态转移条件,ans的求解需要在bfs中间求解.因为只要到了地点n,则无需等待其他tourist.还是蛮简单的,注意细节. /* 229B */ #include <iostrea ...
- lsof 拥有更多的功能
lsof 拥有更多的功能# lsof -i 看系统中有哪些开放的端口,哪些进程.用户在使用它们,比 netstat -lptu 的输出详细. # lsof -i 4 查看IPv4类型的进程COMMA ...
- 汉企C#面向对象——继承
public class Shengwu { private string _Name; public string Name { get { return _Name; } set { _Name ...
- 生成AWK快照的方法
1.首先在用oracle用户登陆执行sqlplus命令用dba用户执行: exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (flush_level=> ...