这是我网上看到的文章 觉得蛮有用 就记录下来了
请参考文章
下面总结一下关于JAVA事件处理机制。
JAVA是通过授权处理机制来对事件进行处理,那么授权处理机制是什么意思呢?一、首先要理解几个重要的概念:
1、事件源。能够产生事件的对象都称为事件源,也就是JAVA认为能够发生事件的对象。如按钮(JButton button)、文本区(JTextArea textarea)、下拉式列表等。
2、事件。事件源能产生特定的事件,如按钮会产生ActionEvent事件等。JAVA定义了很多种事件,命名为XXXEvent。其实所谓的事件就是我们在界面上对组件的处理。
3、监视器。监视器用来对事件源进行监听,以便对事件源发生的事件做出处理。什么是监视器呢?只要一个对象(实际上这里是一个类)实现了监视器接口就能成为监视器。例如事件源所在的容器对象(类),或者其他任何对象(类),一旦实现了事件监视器接口,该类就会自动增加一个事件处理方法,然后我们把事件处理的代码加入其中就可以了。事件源发生事件以后,监视器代替事件源对发生的事件进行处理,这就是JAVA事件授权处理机制。
JAVA事件处理过程如下
当事件源发生事件时,监视器会自动调用被实现的接口方法,对事件处理的代码就可以放置在该方法中。
直接看代码吧 实现了一点点
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import javax.swing.*;
public class Frame extends JFrame {
public Frame(){
/***
事件源 事件 监视器
事件源发生事件以后,监视器代替时间源对发生的事件进行处理 这就是java事件授权处理机制
常用的组件事件处理
1、事件源:JButton
事件:ActionEvent
监视器接口:ActionListener
接口方法:void actionPerformed(ActionEvent e)
事件源对象添加监视器对象方法:事件源对象.addActionListener(监视器对象);
2、事件源:JTextArea
事件:DocumentEvent
监视器接口:DocumentListener
接口方法: void changedUpdate(DocumentEvent e)
void insertUpdate(DocumentEvent e)
void removeUpdate(DocumentEvent e)
事件源对象添加监视器对象的方法:事件源对象.getDocment.addDocumentListener(监视器对象)
3、事件源:JRadioButton
事件:ItemEvent
监视器接口:ItemListener
接口方法:void itemStateChanged(ItemEvent e)
.addItemListener()
4、
鼠标事件处理
当鼠标进入/退出组件 在组件上面单击及拖动鼠标时,会发生鼠标事件。上面的事件处理适用于特定的组件,而该事件处理在任何组件上都可以发生,
即事件源可以是任何组件,只要添加监视器对象即可
事件源:任何组件
事件:MouseEvent
监视器接口:MouseListener
接口方法:mousePressed(MouseEvent e)
mouseReleased(MouseEvent e)
mouseEnter(MouseEvent e)
mouseExited(MouseEvent e)
mouseClicked(MouseEvent e)
事件源对象添加监视器对象的方法:事件源对象.addMouseListener(监视器对象);
另外 当在事件源上拖动鼠标指针或者在事件源上移动鼠标指针时,可以通过MouseMotionListener接口来对事件进行处理
事件:MouseEvent
接口:MouseMotionListener
接口方法:mouseDragged(MouseEvent e)
mouseMoved(MouseEvent e)
添加监视器:事件源.addMouseMotionListener(监视器对象)
键盘事件处理
键盘事件发生在按下 释放或者敲击键盘时,当一个组件处于激活状态时,敲击键盘上的键就发生键盘事件
事件:KeyEvent
接口:KeyListener
接口方法:void keyPressed(KeyEvent e)
void keyTyped(KeyEvent e)
void keyRelease(KeyEvent e)
添加监视器:事件源.addKeyListener(监视器对象);
窗体事件
Window类子类所创建的对象都可以发生WindowEvent类型窗体事件,当一个窗体被激活 撤销激活 打开 关闭或撤销图标化,就会发生窗体事件
事件源:JFrame
事件:WindowEvent事件
监视器接口:WindowListener
添加监视器:事件源.addWindowListener(监视器对象);
*/
super("EventDemo");
JButton btn1 = new JButton("按钮");
btn1.addActionListener(new ButtonClick());
add(btn1);
setSize(300,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]){
new Frame();
}
}
class ButtonClick extends JFrame implements ActionListener {
@Override
public void actionPerformed(ActionEvent e){
//获得事件源
Object obj = e.getSource();
//判断是否为按钮
if(obj instanceof JButton){
JButton srcBtn = (JButton) obj;
JOptionPane.showMessageDialog(this,sr
Btn.getText(),"提示窗口",JOptionPane.WARNING_MESSAGE);
}else{
System.out.println("未知事件源");
}
}
}