事件监听学习笔记

本次课程笔记主要记载事件处理的相关内容


事件源一个产生事件的对象,当这个源对象的某些状态以某种方式发生变化时,就会发生某种类型的事件(一个事件源可能

会生成多个不同类型的事件)。如果某个对象(事件监听者)希望得到事件源产生的事件就需要在这个事件源上注册。

事件:承载事件源状态改变时的信息对象。用户与GUI组件进行交互时就会发生事件

比如当鼠标在面板中移动时,就会生成一个鼠标移动事件的对象,而这个对象保存着当前鼠标在面板中位置信息

事件监听者:实际上就是一个类,该类实现了某个事件监听器借口,不同的事件监听器接口可以监听不同的事件一个类可以实现一

个事件监听接口,也可以实现多个监听接口

--------------------------------------------------------------------------------------无耻的分割线-------------------------------------------------------------------------------

补充:事件可以是鼠标事件、键盘事件、触摸事件或者鼠标移动事件等;事件源就是产生事件的组件,事件监听器就是事件源产生

事件时响应的接口

举个-

例子1:轿车剧烈震动时会自动报警(在开启报警的情况下),在这里事件源就是车子,因为是车子产生震动的,所以事件是震动

(或者说是报警事件),事件监听器是报警器。

例子2:按钮被我按下了,在这里我是属于外界,是我促使干预了按钮才让按钮产生了click事件,所以按钮是事件源,click是

,下面哪个接口响应了就是事件监听器。监听器类(Onclick)一般系统都自带了,如果要用的话implements一下就行。

谁直接产生事件谁就是事件源,而对本次事件产生反应的就是事件监听器 。

下面是事件源、事件、事件监听器之间的关系。

事件处理步骤

① 创建事件监听器。

② 给事件源注册事件监听器。

③ 在事件处理方法中做自己要做的事。


import java.awt.*; import javax.swing.*; import java.awt.event.*; //类Demo_7事件监听者 实现事件监听接口ActionListener public class Demo_7 extends JFrame implements ActionListener{ JPanel pl; JButton jb1,jb2; public static void main(String[] args) { new Demo_7(); } public Demo_7() { Dog dog = new Dog(); pl = new JPanel(); //背景色默认是黑色 pl.setBackground(Color.black); jb1 = new JButton("蓝色"); jb2 = new JButton("黄色"); /* * 注册监听 * 个人理解:注册监听有点像导线,一根连着事件源与事件监听者 */ jb1.addActionListener(this); jb1.addActionListener(dog); jb2.addActionListener(this); jb2.addActionListener(dog); //指定action命令 jb1.setActionCommand("蓝色"); jb2.setActionCommand("黄色"); this.add(pl); this.add(pl); this.add(jb1,BorderLayout.NORTH); this.add(jb2,BorderLayout.SOUTH); this.setTitle("事件监听测试"); this.setSize(200,200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("黄色")) { pl.setBackground(Color.yellow); } if(e.getActionCommand().equals("蓝色")) { pl.setBackground(Color.blue); } } } //类Dog可以作为事件监听者实现事件监听接口 ActionListener class Dog implements ActionListener { /** * * 实现监听器接口中的事件处理方法 */ public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("黄色")) { System.out.println("狗:你点了黄色"); } if(e.getActionCommand().equals("蓝色")) { System.out.println("狗: 你点了蓝色"); } } }


运行程序后出现 面板默认是黑色的

点击按钮(蓝色) 面板变成蓝色 与此同时 控制台打印了一句话: 狗:你点了蓝色

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值