事件类型
1.所有事件类型:
Java将所有组件可能发生的事件进行分类,具有共同特征的事件被抽象为一个事件类AWTEvent,其中包括ActionEvent类(动作事件)、MouseEvent类(鼠标事件)、KeyEvent类(键盘事件)等。表列出了常用Java事件类、处理该事件的接口及接口中的方法。
常用Java事件类、处理该事件的接口及接口中的方法
事件类/接口名称 |
接口方法及说明 |
ActionEvent动作事件类 ActionListener接口 |
actionPerformed(ActionEvent e) 单击按钮、选择菜单项或在文本框中按回车时 |
AdjustmentEvent调整事件类 AdjustmentListener接口 |
adjustmentValueChanged(AdjustmentEvent e) 当改变滚动条滑块位置时 |
ComponentEvent组件事件类 ComponentListener接口 |
componentMoved(ComponentEvent e)组件移动时 componentHidden(ComponentEvent e)组件隐藏时 componentResized(ComponentEvent e)组件缩放时 componentShown(ComponentEvent e)组件显示时 |
ContainerEvent容器事件类 ContainerListener接口 |
componentAdded(ContainerEvent e)添加组件时 componentRemoved(ContainerEvent e) 移除组件时 |
FocusEvent焦点事件类 FocusListener接口 |
focusGained(FocusEvent e)组件获得焦点时 focusLost(FocusEvent e)组件失去焦点时 |
ItemEvent选择事件类 ItemListener接口 |
itemStateChanged(ItemEvent e) 选择复选框、选项框、单击列表框、选中带复选框菜单时 |
KeyEvent键盘事件类 KeyListener接口 |
keyPressed(KeyEvent e)键按下时 keyReleased(KeyEvent e) 键释放时 keyTyped(KeyEvent e)击键时 |
MouseEvent鼠标事件类 MouseListener接口 |
mouseClicked(MouseEvent e) 单击鼠标时 mouseEntered(MouseEvent e)鼠标进入时 mouseExited(MouseEvent e)鼠标离开时 mousePressed(MouseEvent e)鼠标键按下时 mouseReleased(MouseEvent e) 鼠标键释放时 |
MouseEvent鼠标移动事件类 MouseMotionListener接口 |
mouseDragged(MouseEvent e)鼠标拖放时 mouseMoved(MouseEvent e)鼠标移动时 |
TextEvent文本事件类 TextListener接口 |
textValueChanged(TextEvent e) 文本框、多行文本框内容修改时 |
WindowEvent窗口事件类 WindowListener接口 |
windowOpened(WindowEvent e)窗口打开后 windowClosed(WindowEvent e)窗口关闭后 windowClosing(WindowEvent e)窗口关闭时 windowActivated(WindowEvent e)窗口激活时 windowDeactivated(WindowEvent e) 窗口失去焦点时 windowIconified(WindowEvent e)窗口最小化时 windowDeiconified(WindowEvent e) 最小化窗口还原时 |
当多个事件源触发的事件由一个共同的监听器处理时,我们可以通过getSource()方法判断当前的事件源是哪一个组件。
2: 事件处理的主要步骤:
1. 首先产生监听器,监听是否有事件源的产生。
2. 在要实现具有事件处理功能的组件上注册监听器。
3. 注册监听器的组件产生事件源,并将事件对象返回给监听器。
4. 有监听器调用相应的方法处理事件。
3.注册事件监听器的三种方法:
1.通过接口实现(自身既是JFrame子类,是一个JFrame,又是事件监听器)
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Event extends JFrame implements ActionListener {
private JButton jb;
public Event() {
jb = new JButton("确定");
jb.addActionListener(this); //注册事件监听器
this.add(jb); //用this指向自己,自己是一个JFrame,直接添加组件
this.setSize(300, 200);
this.setDefaultCloseOperation(3);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) { //实现ACtionListener下方法,实现事件监听的处理方法
this.jb.setText("事件响应了");
}
public static void main(String[] args) {
new Event();
}
}
2.事件适配器。事件适配器和匿名内部类的方式基本相同,只不过适配器是JAVA中为了简化编程而提供的类,该类默认的实现了相应事件接口中的方法。比如WindowListener接口对应的事件适配器是WindowAdapter,而KeyListener对应的适配器接口是KeyAdapter,这样通过适配器我们就省去了通过接口实现必须实现所有抽象方法的烦恼,应为适配器中已经实现了所有的抽象方法,我们只需重写我们想要实现的方法就可以了。
import java.awt.*;
import java.awt.*;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Event extends JFrame {
private JButton jb;
public Event() {
jb = new JButton("确定");
jb.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
jb.setText("事件响应了");
}
});
this.add(jb);
this.setSize(300, 200);
this.setDefaultCloseOperation(3);
this.setVisible(true);
}
public static void main(String[] args) {
new Event();
}
}
3.匿名内部类。
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Event extends JFrame {
private JButton jb;
public Event() {
jb = new JButton("确定");
jb.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) { //事件源不同的操作对应不同的事件处理方法
jb.setText("事件响应了");
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
});
this.add(jb);
this.setSize(300, 200);
this.setDefaultCloseOperation(3);
this.setVisible(true);
}
public static void main(String[] args) {
new Event();
}
}