java的事件详解_详解Java事件处理机制

以键盘事件为例详解事件处理

详解Java事件处理机制

初步介绍Java 事件处理是采取 “委派事件模型”。所谓“委派事件模型”是指当事件发生时,产生事件的对象(即事件源),会把此“信息”传递给 “事件监听者” 处理的一种方式,而这里所说的“信息”实际上就是 “java.awt.event” 事件类库里某个类所创建的对象,我们暂时把它称为“事件的对象”

是不是有点抽象,用图来表示就是:

java的事件详解_详解Java事件处理机制_第1张图片

我们用一个实例来讲解

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65package JavaEventListener;

import java.awt.Graphics;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class MyEventListener extends JFrame{

MyPanel myPanel = null;

public MyEventListener(){

myPanel = new MyPanel();

this.add(myPanel);

this.setSize(200,150);

this.setVisible(true);

this.addKeyListener(myPanel);

}

public static void main(String[] args){

MyEventListener eListener = new MyEventListener();

}

}

class MyPanel extends JPanel implements KeyListener{

int x,y;

public void paint(Graphics g){

super.paint(g);

g.fillOval(x, y, 20, 20);

}

@Override

public void keyTyped(KeyEvent e){

}

@Override

public void keyPressed(KeyEvent e){

switch(e.getKeyCode()) {

case KeyEvent.VK_UP:

y--;

break;

case KeyEvent.VK_DOWN:

y++;

break;

case KeyEvent.VK_LEFT:

x--;

break;

case KeyEvent.VK_RIGHT:

x++;

break;

}

this.repaint();

}

@Override

public void keyReleased(KeyEvent e){

}

}

这个实例是基于swing的,实例中通过KeyListener来监听键盘事件,从而达到可以使用上下左右键控制小球移动的目的

在这个实例中

事件源是键盘

事件是键盘被按下(释放)

事件监听者是MyPanel对象–>第18行

事件处理方法则是KeyListener中的一系列方法(keyPressed…)–>34行起

这也体现了上面提到的委派事件模型

深入理解

① 事件源

事件源是一个产生或触发事件的对象,如按钮对象,窗口对象等。当这个事件源对象的某些状态以某种方式发生变化时,就会产生某种类型的事件(一个事件源可能会生成多个不同类型的事件)比如一个窗口可以被最小化,最大化,这就是不同类型的事件。

② 事件

事件就是承载事件源状态改变时的信息对象。也可以说事件是事件源向事件监听器传输事件源状态信息的载体。在用户与GUI组件进行交互时就会生成事件,如鼠标移动,窗口大小改变,键盘按下等。在java.awt.event 和javax.swing.event包中定义了各种事件的类型。具体在此不多赘述,请自行查阅jdk文档。

③ 事件监听者

事件监听者实际上是一个类,该类实现了某个事件监听器接口。如上文提到的MyPanel类就作为事件监听者,实现了KeyListener接口,它可以对接收到的事件进行处理

④ 事件监听器接口

事件监听器接口有很多,不同的事件监听器接口可以监听不同的事件,一个类可以实现一个事件监听接口,也可以实现多个监听接口就比如上文代码中,我实现了KeyListener,也可以同时实现MouseListener等多个接口。实现后只需要在前面用this.add()注册即可。

小结

Java事件监听编写步骤:

1.编写事件处理类

2.给事件处理类实现监听器接口

3.在事件处理类中重写(@Override)其事件处理函数

4.在事件源类中制定该事件的监听器,也就是注册监听(this.add();)

废话时间

为什么要写这篇Blog呢?

这是我高中毕业后写的第一篇文章,顺便重温一下前面Java学习的知识点。

转载请注明出处->Yeliheng的技术小站 谢谢!

你可能感兴趣的:(java的事件详解)