本次课程笔记主要记载事件处理的相关内容
事件源:一个产生事件的对象,当这个源对象的某些状态以某种方式发生变化时,就会发生某种类型的事件(一个事件源可能
会生成多个不同类型的事件)。如果某个对象(事件监听者)希望得到事件源产生的事件就需要在这个事件源上注册。
事件: 承载事件源状态改变时的信息对象。用户与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("狗: 你点了蓝色");
}
}
}
运行程序后出现 面板默认是黑色的
点击按钮(蓝色) 面板变成蓝色 与此同时 控制台打印了一句话: 狗:你点了蓝色