📄 41.txt
字号:
//
事件
事件(Event) – 一个对象,它描述了发生什么事情
事件源(Event source) – 产生事件的组件
事件处理方法(Event handler) – 能够接收、解析和处理事件类对象、实现和用户交互的方法
//
事件处理模型(Delegation Model)
一个事件可以被发送到多个不同的处理方法.
如果关注某个组件产生的事件 ,则可以在该组件上注册适当的事件处理方法,实际上注册的事件处理者方法所属类型的一个对象----事件监听器
//
Java事件处理举例
import java.awt.*;
import java.awt.event.*;
public class TestActionEvent2 {
public static void main(String args[]) {
Frame f = new Frame("Test");
Button b1 = new Button("Start");
Button b2 = new Button("Stop");
Monitor bh = new Monitor();
b1.addActionListener(bh); b2.addActionListener(bh);
b2.setActionCommand("game over");
f.add(b1,"North"); f.add(b2,"Center");
f.pack(); f.setVisible(true);
}
}
class Monitor2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("a button has been pressed, the relative info is: " + e.getActionCommand());
}
}
//
事件代理模型综述
Java GUI设计中,通过注册监听器的方式对所关注的事件源进行监控。
注册监听器时应指明该监听器监控(感兴趣)的事件种类。
当事件源发生了某种类型的事件时,只触发事先已就该种事件类型注册过的监听器。
//
Java GUI事件及相应监听器接口
事件类型 相应监听器接口 监听器接口中的方法
Action ActionListener actionPerformed(ActionEvent)
Item ItemListener itemStateChanged(ItemEvent)
Mouse MouseListener mousePressed(MouseEvent)
mouseReleased(MouseEvent)
mouseEntered(MouseEvent)
mouseExited(MouseEvent)
mouseClicked(MouseEvent)
Mouse Motion
MouseMotionListener mouseDragged(MouseEvent)
mouseMoved(MouseEvent)
Key KeyListener keyPressed(KeyEvent)
keyReleased(KeyEvent)
keyTyped(KeyEvent)
Focus FocusListener focusGained(FocusEvent)
Adjustment AdjustmentListener adjustmentValueChanged
(AdjustmentEvent)
Component ComponentListener componentMoved(ComponentEvent)
componentHidden (ComponentEvent)
componentResized(ComponentEvent)
componentShown(ComponentEvent)
Window WindowListener windowClosing(WindowEvent)
windowOpened(WindowEvent)
windowIconified(WindowEvent)
windowDeiconified(WindowEvent)
windowClosed(WindowEvent)
windowActivated(WindowEvent)
windowDeactivated(WindowEvent)
Container ContainerListener componentAdded(ContainerEvent)
componentRemoved(ContainerEvent)
Text TextListener textValueChanged(TextEvent) focusLost(FocusEvent)
//
多重监听器
一般情况下,事件源可以产生多种不同类型的事件,因而可以注册(触发)多种不同类型的监听器。
一个事件源组件上可以注册多个监听器,针对同一个事件源的同一种事件也可以注册多个监听器,一个监听器可以被注册到多个不同的事件源上。
//
事件适配器(Event Adapter)
为简化编程,针对大多数事件监听器接口定义了相应的实现类----事件适配器类,在适配器类中,实现了相应监听器接口中所有的方法,但不做任何事情。
在定义监听器类时就可以继承事件适配器类,并只重写所需要的方法。
ComponentAdapter(组件适配器)
ContainerAdapter(容器适配器)
FocusAdapter(焦点适配器)
KeyAdapter(键盘适配器)
MouseAdapter(鼠标适配器)
MouseMotionAdapter(鼠标运动适配器)
WindowAdapter(窗口适配器)
//
事件适配器用法举例
定义一个监听器类,用于处理鼠标点击事件:
1 import java.awt.*;
2 import java.awt.event.*;
3
4 public class Monitor3 extends MouseAdapter {
5
6 // 当只需要处理mouseClick事件时,可以继承
7 // 事件适配器类MouseAdapter,以避免实现接口
8 // 时不得不重写接口中定义的所有方法
9
10 public void mouseClicked(MouseEvent e) {
11 // 处理代码……
12 }
13 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -